2014-07-25 25 views
5

Elastikiye amaçlı arama konusunda oldukça yeni ve özellikle bu konuda özel bir soru sormadım. Eğer zaten cevaplanmışsa, ileri düzeyde özür dilerim ve umarım beni doğru yöne yönlendirebilirsiniz.ElasticSearch'teki Toplama (Nest)

Ben ANDAE aşağıdaki uygulamak için bir yol arıyordu

:

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

ve bu:

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

hem başarısız Hangi

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

     } 
    }, 

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

     } 
    } 
} 

Bunu denedim iş. Başka bir şey mi eksik?

cevap

14

Öyle gibi birden toplamaları belirtebilirsiniz:

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

Her toplama açıklayıcısı, içten, (bir anahtar olarak agg adını kullanarak) bir sözlüğe kendisini ekler ve sonra sürekli olarak daha eklemek böylece kendisini döndürür. ANDAE aggs etrafında belgelerin eksikliği için

Özür. Dokümanları yenileme sürecindeyiz ve yukarıdaki kullanım örneğinin bir örneğini ekleyeceğimizden emin olabilirsiniz.

+1

Çok güzel çalışıyor, teşekkürler! Gelecekte daha fazla belge için sabırsızlanıyoruz. –

+0

Yanıt @ greg için teşekkürler, aynı aa bool filtresi gibi çalışacağını tahmin ederdim: .Aregregations (a => a.Terms ("fieldA", t => t.Field (s => s.) FieldA)), b => b.Terms ("Fieldb" t => t.Field (s => s.FieldB)) ) – jhilden