頻度が特定のしきい値を超えるドキュメントのみを返す集計を実装したいと考えています。
たとえば、すべてのドキュメントとそのカウントを取得する集計は次のとおりです。
AggregationBuilder aggregation = AggregationBuilders
.terms("agg").field("column_name");
これにより、各値のドキュメント数が得られますcolumn_name
[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"},{"doc_count":23,"key":"val3"}]
ここで、これらのドキュメントのすべてが必要ないとしましょう。doc_count
よりも大きいものだけが欲しい25
したがって、理想的な結果は
[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"}]
このようなフィルターを集計に適用するにはどうすればよいですか? 集計を見てFilterBuilders
フィルターをかけていましたが、それらはドキュメント内の任意の値にフィルターを適用するためのものです。たとえば、フィルターを適用して、ドキュメントのみを取得できval1 == xza
ますcolumn_name
しかし、それは私が探しているものではありません。doc_cunt
集計が適用された後に、値にしきい値を適用したいと考えています。
これは可能ですか?私はelasticsearch Java APIバージョン1.7.2を使用しています