2014-07-25 9 views
5

Ich bin ziemlich neu in Elasticsearch und ich habe noch eine Frage speziell dazu zu finden. Wenn es bereits beantwortet wird, entschuldige ich mich im Voraus und hoffe, dass Sie mich auf die richtige Richtung weisen können.Aggregation in ElasticSearch (Nest)

ich nach einer Möglichkeit, die folgenden in NEST umzusetzen:

"aggs" : { 
    "fieldA" : { 
     "terms" : { 
      "field" : "fieldA" 

     } 
    }, 

    "fieldB" : { 
     "terms" : { 
      "field" : "fieldB" 

     } 
    } 
} 

Ich habe dies versucht:

.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA)) && q.Terms("fieldB", r => r.Field(s => s.fieldB))) 

und diese:

.Aggregations(q => q.Terms("fieldA", r => r.Field(s => s.fieldA))) 
.Aggregations(q => q.Terms("fieldB", r => r.Field(s => s.fieldB))) 

Welche beide gescheitert Arbeit. Vermisse ich etwas anderes?

Antwort

14

können Sie mehrere Aggregationen angeben wie folgt:

.Aggregations(a => a 
    .Terms("fieldA", t => t.Field(s => s.FieldA)) 
    .Terms("fieldB", t => t.Field(s => s.FieldB)) 
) 

Jeder Aggregation Beschreiber, intern, fügt sich zu einem Wörterbuch (AGG Namen als Schlüssel) und gibt sich dann, so dass Sie ständig mehr hinzufügen können.

Entschuldigung für den Mangel an Dokumentation rund um Aggs in NEST. Wir sind gerade dabei, die Dokumente zu überarbeiten, und wir werden sicher sein, ein Beispiel für den obigen Anwendungsfall zu geben.

+1

Es funktioniert wunderbar, danke! Ich freue mich auf weitere Dokumentation in der Zukunft. –

+0

Danke für die Antwort @greg, ich hätte gedacht, es würde funktionieren wie der gleiche aa bool-Filter: .Aggregationen (a => a.Nutzungsbedingungen ("fieldA", t => t.Field (s => s. FeldA)), b => b.Nutzungsbedingungen ("fieldB", t => t.Field (s => s.FieldB)) ) – jhilden