我拼命地试图在Elasticsearch上执行一个简单的搜索操作,但自几个小时以来就失败了。这是我的代码:
res = es.search(index="people", doc_type="test", body={"query":{"match":{"name": "john"}}})
我在Internet上看到了很多次,但是我总是会出错,并且不知道我的代码片段有什么问题。
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'
我必须在哪里编写所需的"查询"?我正在尝试执行搜索名称和姓氏。
search
库中的CC_1方法(您正在使用)调用查询参数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
)。
两个库导出相同的模块名称,因此当您使用错误的库时,有时有点可以工作。这不是巧合,请参阅有关其历史和差异的这篇文章。安装官方客户很容易,因为:
pip uninstall pyelasticsearch
pip install elasticsearch