私はこのようなループを持っています...
while (true) {
scrollResp = client.prepareSearchScroll(scrollResp.getScrollId()).setScroll(new TimeValue(600000)).execute().actionGet();
for (SearchHit hit : scrollResp.getHits()){
// does this when totalHits > scrollSize, skips it otherwise
}
//Break condition: No hits are returned
if (scrollResp.hits().hits().length == 0) {
break;
}
}
クエリの scrollSize は 500 に設定されます。scrollResp.getHits().totalHits() < 500 の場合、for ループには入りません。scrollSize を < totalHits に変更すると、for ループに入ります。
一般に、クエリごとに 500 件を超える結果が期待されますが、どちらの場合でも機能する必要があります。おそらく私が反復を間違って試みているのか、それとも何なのかわかりません。フィードバックをお待ちしております。