Python elasticsearch.helpers.scan示例

时间:2017-12-08 21:14:50

标签: python python-2.7 elasticsearch elasticsearch-5

有人可以提供python elasticsearch helpers client的扫描API示例吗?

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

如何使用res对象获取elasticsearch的所有结果?

1 个答案:

答案 0 :(得分:16)

documentation包含一个示例,但如果我正确阅读,helpers.scan默认设置search_type=scan,即removed in ES 5.1。这会导致示例代码失败,ES返回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>]}