3

Elasticsearch の 10k の壁を超えるために複数回クエリを実行して、結果にページネーションを適用しようとしています。Elasticsearch の結果は複数のクエリで異なる可能性があるため、生成された ID を使用して次の結果を取得したいと考えています。

たとえば、1000 件の結果を返すクエリを実行するとします。次に、1000 番目の結果の ID 値を取得し、次のようなクエリを実行します: match : ID {{1000thID}}

このようにして、1001 から 2000 までの結果を取得したいと考えています。その後 2001 年から 3000 年まで、というように続きます。

現在、Python 用の Elasticsearch DSL を使用して、次のようなドメイン名を照会しています。

search.query('match', domainname=domainname)

上記の要件に一致するようにこのコードを再構築するにはどうすればよいですか。('一致',_ID > ID_変数)

4

1 に答える 1

1

目的を達成する最善の方法は、scroll/can API を使用することです。ただし、それでもその方法で続行したい場合は、次のようにすることができます。

last_id = ...
search.filter('range', id={'gt': last_id + 1, 'lt': last_id + 1000})
于 2016-10-19T12:22:13.287 に答える