Elasticsearch Python API 在一个简单的查询中得到 "search() missing 1 required positional argument"
Elasticsearch Python API results in "search() missing 1 required positional argument" on a simple query
我正拼命尝试在 elasticsearch 上执行简单的搜索操作,但几个小时后就失败了。这是我的代码:
res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
我在互联网上多次看到这个,但我总是出错,并且不知道我的代码片段有什么问题。
Traceback (most recent call last):
File "./es_request.py", line 14, in <module>
res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
File "/usr/local/lib/python3.4/dist-packages/pyelasticsearch/client.py", line 93, in decorate
return func(*args, query_params=query_params, **kwargs)
TypeError: search() missing 1 required positional argument: 'query'
我必须在哪里写所需的'query'?我正在尝试搜索名字和姓氏。
pyelasticsearch
库(您正在使用)中的 search
方法调用查询参数 query
,而不是 body
:
query = {"query": {"match": {"name": "john"}}}
es.search(index="people", doc_type="test", query=query)
es.search(query, index="people", doc_type="test") # you can also do this
我想你打算使用官方的 elasticsearch
库,你的代码可以完美地工作(为了增加更多的混乱,它的文档位于 elasticsearch-py.readthedocs.io
)。
两个库都导出相同的模块名称,因此当您使用错误的模块时,有时 某种 可以正常工作。这不是巧合,see this article关于他们的历史和分歧。安装官方客户端很简单:
pip uninstall pyelasticsearch
pip install elasticsearch
我正拼命尝试在 elasticsearch 上执行简单的搜索操作,但几个小时后就失败了。这是我的代码:
res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
我在互联网上多次看到这个,但我总是出错,并且不知道我的代码片段有什么问题。
Traceback (most recent call last):
File "./es_request.py", line 14, in <module>
res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
File "/usr/local/lib/python3.4/dist-packages/pyelasticsearch/client.py", line 93, in decorate
return func(*args, query_params=query_params, **kwargs)
TypeError: search() missing 1 required positional argument: 'query'
我必须在哪里写所需的'query'?我正在尝试搜索名字和姓氏。
pyelasticsearch
库(您正在使用)中的 search
方法调用查询参数 query
,而不是 body
:
query = {"query": {"match": {"name": "john"}}}
es.search(index="people", doc_type="test", query=query)
es.search(query, index="people", doc_type="test") # you can also do this
我想你打算使用官方的 elasticsearch
库,你的代码可以完美地工作(为了增加更多的混乱,它的文档位于 elasticsearch-py.readthedocs.io
)。
两个库都导出相同的模块名称,因此当您使用错误的模块时,有时 某种 可以正常工作。这不是巧合,see this article关于他们的历史和分歧。安装官方客户端很简单:
pip uninstall pyelasticsearch
pip install elasticsearch