2016-08-08 12 views
0

Es gibt 3 Typen im Elasticsearch-Index: type1, typ2, typ3. Ich muss nach Typ filtern (standardmäßig Filterwert = Typ1). Aber ich brauche auch Typ-Aggregationen. Aber es ist unmöglich, weil ich in jeder Abfrage Filter verwende und es nur Objekte vom Filtertyp gibt. Bitte helfen Sie mir, herauszufinden, wie es geht. Gibt es nur eine Möglichkeit, die zweite Abfrage ohne Filter zu verwenden?Typzusammenfassung in ElasticSearch (Nest)

+0

Was meinen Sie mit "Typ" Aggregationen? Meinst du Begriffe Aggregationen? Es ist nicht ganz klar, was Sie fragen. Könnten Sie das näher erläutern, vielleicht mit einem Beispiel im Code oder Pseudocode? –

+0

ist es ein Problem der Verwendung von Filter und Aggregation auf dem gleichen Feld – Aydar

+0

Warum möchten Sie einen Filter beim Abrufen von Aggregationen verwenden? Können Sie Ihr Beispiel erweitern und erklären, was genau Sie erreichen möchten? – oldbam

Antwort

0

Es scheint wie eine Use-Case für post-filter

Die post_filter angewandt werden, um die Suche am Ende eines Suchanfrage trifft, nach Aggregationen bereits berechnet worden sind.

{ 
     "query": { 
     "match_all": {} 
     }, 
     "aggs": { 
     "typeAggr": { 
      "terms": { "field": "type" } 
     } 
     }, 
     "post_filter": { 
     "term": { "type": "type1" } 
     } 
    } 

Diese Abfrage wird die Dokumentation passenden Filter (Typ 1) Liste, während die Aggregation Ergebnisse liefern, unabhängig von dem Filter auf type Feld.