Python elasticsearch.helpers.scan示例

19

有没有人能提供Python Elasticsearch helpers客户端的扫描API示例?

res = elasticsearch.helpers.scan(....)

如何使用 res 对象从 Elasticsearch 获取所有结果?

1个回答

37

文档中包含一个示例,不过如果我理解正确的话,默认情况下helpers.scan会设置search_type=scan,这在ES 5.1中被移除了。这会导致示例代码失败,并返回No search type for [scan]。我们可以使用preserve_order=True进行修改(但我不确定这里的性能影响):

import elasticsearch
import elasticsearch.helpers
es = elasticsearch.Elasticsearch()
results = elasticsearch.helpers.scan(es,
    index="test_index",
    doc_type="my_document",
    preserve_order=True,
    query={"query": {"match_all": {}}},
)

for item in results:
    print(item['_id'], item['_source']['name'])

这个帮助程序返回一个对象,您可以迭代该对象以获取查询的实际结果。 item 的格式为
{'_index': <str>, '_type': <str>, '_id': <str>, '_score': <float or None>, '_source': {'key': val}, 'sort': [<int>]}

1
属性错误:模块“elasticsearch”没有属性“helpers”。 - keithpjolley
1
@keithpjolley 嗯,谢谢,已经修复了。那个错误信息可以少一点误导性... - Norrius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接