0

Ich möchte eine Aggregation implementieren, die nur die Dokumente zurückgibt, deren Häufigkeit über einem bestimmten Schwellenwert liegt.Elasticsearch Java API: Aggregationsfilter für Belegzählungen

Zum Beispiel, hier ist die Aggregation

AggregationBuilder aggregation = AggregationBuilders 
       .terms("agg").field("column_name"); 
in column_name

jetzt
[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"},{"doc_count":23,"key":"val3"}] 

für jeden Wert

so das gibt mir die Zählungen der Dokumente alle Dokumente mit ihren Zählungen zu bekommen, lässt sag ich will nicht alle diese Dokumente. Ich will nur diejenigen, die eine doc_count größer als 25

Also das ideale Ergebnis

[{"doc_count":30,"key":"val1"},{"doc_count":29,"key":"val2"}]

würde sein wie kann ich einen solchen Filter auf meine Aggregation anwenden? Ich habe FilterBuilders betrachtet und Aggregationen gefiltert, aber sie dienen zum Anwenden von Filtern auf alle Werte in den Dokumenten. Zum Beispiel kann ich einen Filter anwenden, um nur die Dokumente zu erhalten, wo val1 == xza für

ist, aber das ist nicht was ich suche. Ich möchte einen Schwellenwert für die doc_cunt Werte anwenden, nachdem die Aggregation angewendet wurde.

Ist das möglich? Ich verwende elasticsearch java api Version 1.7.2

Antwort

1

Begriffe Aggregation hat eine eingebaute Option namens min_doc_count. Siehe here für ihre Dokumentation darüber. Ich habe nicht Java API verwendet, aber this example scheint .minDocCount() in einem Beispiel zu verwenden (ctrl-f 'minDocCount')

+0

danke! Das war's – AbtPst

Verwandte Themen