Was ich erreichen möchte: Ich möchte, dass meine "Alter" -Aggregation nicht vom Abfragefilter gefiltert wird und ich Filter anwenden kann.
Wenn ich also mit dieser Abfrage beginne:
%Vor%Meine Aggregation "young_age" wird sowohl von filter_1 als auch von filter_2 gefiltert. Ich möchte nicht, dass meine Aggregation nach filter_1 gefiltert wird.
Als ich in die Dokumentation schaute, dachte ich, dass globale Aggregation mein Problem lösen würde, und ich schrieb diese Abfrage:
%Vor%Aber dann beschwert sich elastische Suche über mein filter_2:
"" " Gefunden zwei Aggregationstypdefinitionen [Alter] in [global] und [filter] "" "
Und natürlich, wenn ich das filter_2 entferne:
%Vor%Dann wird meine Aggregation nicht wie erwartet durch filter_1 gefiltert.
Also, wie soll ich filter_2 auf meine globale Aggregation anwenden? Oder wie soll ich das erreichen? Ich erinnere mich, mit den Facettenfiltern etwas Ähnliches geschrieben zu haben ...
Meiner Meinung nach ist dies der typische Anwendungsfall eines post_filter . Wie der Arzt sagt:
Der post_filter wird auf die Suchtreffer am Ende einer Suchanfrage angewendet, nachdem die Aggregationen bereits berechnet wurden
Ihre Abfrage sieht folgendermaßen aus:
%Vor% In diesem Fall sind die Suchtreffer alle Dokumente im Index. Dann wird die Aggregation berechnet (vor Filter_1). Und danach wird die post_filter
mit dem Filter_1 ausgeführt.
Bearbeiten: Wie Sie in Ihrer Empfehlung sagten, haben Sie viele Aggregationen und nur eine, die nicht von filter_1
betroffen sein sollte Ich habe Ihre Abfrage mit globaler Aggregation
Tags und Links elasticsearch aggregation