[解決済み] Elasticsearch 2.1: 結果ウィンドウが大きすぎる (index.max_result_window)
質問
Elasticsearch 2.1から情報を取得し、ユーザーがその結果をページスルーできるようにしています。ユーザーが高いページ数を要求した場合、以下のエラーメッセージが表示されます。
結果ウィンドウが大きすぎます。 にしてください。[10000]以下でなければなりませんが、[10020]でした。より効率的な方法として、scroll apiを参照してください。 を参照してください。この制限は [index.max_result_window] インデックスレベルパラメータを変更することで設定できます。
elasticのドキュメントによると、メモリ消費量が多いため、スクロール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 に対して "normal" 検索要求を行う代わりに、結果 10020 までスクロールするためにスクロール API を使用した場合、メモリ消費量は本当に少なくなるでしょうか (そうだとしたらなぜでしょうか)?
2) スクロールAPIは私のためのオプションではなく、私は "index.max_result_window" を増やさなければならないようです。どなたか、この件に関する経験をお持ちですか?
3) 私の問題を解決するための他のオプションはありますか?
どのように解決するのですか?
elasticのドキュメントの以下のページで、ディープページングについて説明されています。
https://www.elastic.co/guide/en/elasticsearch/guide/current/pagination.html https://www.elastic.co/guide/en/elasticsearch/guide/current/_fetch_phase.html
ドキュメントのサイズ、シャードの数、および使用するハードウェアによります。 使用するハードウェアにもよりますが、10,000 から 50,000 の結果 (1,000 から 5,000 ページ) をページングすることは完全に可能です。 5,000ページ)の深さをページングすることは、完全に可能です。しかし、十分な大きさの の値が大きい場合、ソート処理は非常に重くなり、膨大な量のCPU、メモリ、バンドを使用することになります。 CPU、メモリ、帯域幅を大量に消費することになる。このような理由から、私たちは強く 深いページングを行わないようお勧めします。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン