0

頻度が特定のしきい値を超えるドキュメントのみを返す集計を実装したいと考えています。

たとえば、すべてのドキュメントとそのカウントを取得する集計は次のとおりです。

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を使用しています

4

1 に答える 1

1

項の集計には、 という組み込みオプションがありますmin_doc_count。そのドキュメントについては、こちらを参照してください。私はJava APIを使用していませんが、この例は例で使用.minDocCount()しているようです(ctrl-f 'minDocCount')

于 2016-10-20T13:32:50.200 に答える