Elasticsearch 2.1から情報を取得し、ユーザーが結果をページングできるようにします。ユーザーが高いページ番号を要求すると、次のエラーメッセージが表示されます。
結果ウィンドウが大きすぎます。+サイズは[10000]以下である必要がありますが、[10020]でした。大きなデータセットをリクエストするためのより効率的な方法については、スクロールAPIを参照してください。この制限は、[index.max_result_window]インデックスレベルパラメータを変更することで設定できます
弾力性のあるドキュメントによると、これはメモリ消費量が多く、スクロールAPIを使用するためです。
より大きい値は、検索ごとおよび検索を実行するシャードごとにヒープメモリのかなりのチャンクを消費する可能性があります。深いスクロールにはスクロールAPIを使用するため、この値を残すのが最も安全ですhttps://www.elastic.co/guide/en/elasticsearch/reference/2.x/breaking_21_search_changes.html#_from_size_limits
問題は、大きなデータセットを取得したくないということです。結果セットの非常に高い位置にあるデータセットからスライスを取得したいだけです。また、スクロールドキュメントには次のように書かれています。
スクロールは、リアルタイムのユーザーリクエストを対象としていませんhttps://www.elastic.co/guide/en/elasticsearch/reference/2.2/search-request-scroll.html
これは私にいくつかの質問を残します:
1)結果10000-10020の「通常の」検索要求を実行する代わりに、スクロールAPIを使用して結果10020までスクロールアップした場合(および10000未満のすべてを無視した場合)、メモリ消費量は実際に少なくなりますか(その場合は理由はありますか)?
2)スクロールAPIは私にとってオプションではないようですが、「index.max_result_window」を増やす必要があるようです。誰かがこれについて何か経験がありますか?
3)私の問題を解決する他のオプションはありますか?
'Result window is too large, from + size must be less than or equal to: [10000] but was [47190]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level parameter.')
4719ページ(10ページごとの結果)があると表示されました。そして私はあなたの提案がうまくいくと思います。