2014-07-25 20 views
5

Sono abbastanza nuovo per elasticsearch e non ho ancora trovato una domanda specifica su questo. Se ha già risposto, mi scuso in anticipo e spero che tu possa indicarmi la direzione corretta.Aggregation in ElasticSearch (Nest)

ero alla ricerca di un modo per implementare quanto segue in NEST:

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

     } 
    }, 

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

     } 
    } 
} 

Ho provato questo:

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

e questo:

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

Quale sia riuscito a lavoro. Mi manca qualcos'altro?

risposta

14

È possibile specificare più aggregazioni in questo modo:

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

Ogni descrittore di aggregazione, internamente, si aggiunge a un dizionario (utilizzando il nome agg come una chiave) e poi si ritorna in modo da poter sempre aggiungere di più.

Ci scusiamo per la mancanza di documentazione su aggs in NEST. Siamo in procinto di rinnovare i documenti e saremo sicuri di includere un esempio del caso di utilizzo di cui sopra.

+1

Funziona magnificamente, grazie! Aspetterò ulteriori documenti in futuro. –

+0

Grazie per la risposta @greg, avrei immaginato che avrebbe funzionato come lo stesso filtro aa bool: .Gestioni (a => a.Terms ("campoA", t => t.Field (s => s. Campo A)), b => b.Terms ("campoB", t => t.Field (s => s.FieldB)) ) – jhilden

Problemi correlati