web-dev-qa-db-ja.com

Python elasticsearch.helpers.scanの例

誰かがpython elasticsearchヘルパークライアントのスキャンAPIの例を提供できますか?

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

Resオブジェクトを使用してelasticsearchからすべての結果を取得するにはどうすればよいですか?

14
Developer

ドキュメント には例が含まれていますが、正しく読んでいる場合、helpers.scanはデフォルトでsearch_type=scanを設定します。これは 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>]}
20
Norrius