elasticsearch における doc_count_error_upper_bound の重要性と、それを最小限に抑える方法は何ですか? 質問する

elasticsearch における doc_count_error_upper_bound の重要性と、それを最小限に抑える方法は何ですか? 質問する

属性に対する elasticsearch の集計クエリでは常に高い値が得られますdoc_count_error_upper_bound。10 億近くのドキュメントがインデックスされている ES クラスターの場合、8000 または 9000 まで高くなることがあります。約 500 万のドキュメントのインデックスでクエリを実行すると、値は約 300 ~ 500 になります。

問題は、私の結果がどの程度間違っているかということです(以下のJSONに基づいて上位20件のカウントクエリを試しています)

"aggs":{ "group_by_creator":{ "terms":{ "field":"creator" } } } }

ベストアンサー1

これはかなりよく説明されている公式文書

集計を実行するとterms、各シャードは独自の上位 20 個の用語リストを作成し、上位 20 個の用語を返します。調整ノードは、それらの用語をすべて収集し、並べ替えて、すべてのシャードの全体的な上位 20 個の用語を取得します。

複数のシャードがある場合、公式ドキュメントの例に示されているように、エラー数がゼロでない可能性があるのは当然であり、それを解決する方法があります。ドキュメントカウントエラーを計算する

インデックスごとに 1 つのシャードを使用すると、ドキュメント エラー数は常に 0 になりますが、インデックス トポロジーによっては、特にドキュメントが 10 億近くある場合は、必ずしも実現可能とは限りません。ただし、500 万のドキュメントを含むインデックスの場合、ドキュメントがそれほど大きくなければ、1 つのシャードに保存できます。もちろん、ハードウェアに大きく依存しますが、シャード サイズが 15/20 GB を超えない場合は、問題はありません。1 つのシャードで新しいインデックスを作成して、どうなるかを確認してみてください。

おすすめ記事