2016-03-22 29 views
0

Her kullanıcının herhangi bir gönderiyi ("userid" ve "post" olmak üzere) yayınlayabildiği bir elasticsearch türüm var. Şimdi 0 post, 1 post yayınlayan kullanıcı sayısına ihtiyacım var 2 mesaj ve benzeri .... nasıl yaparım? Bence iç içe geçmiş toplamalara ihtiyaç var ama nasıl devam edeceğimi bilmiyorum. Şimdiden teşekkürler !elasticsearch içinde iç içe sayım kümelemeleri

+2

Lütfen dizininizin eşlemesini paylaşın. 'GET/index/type/_mapping' – Richa

+1

Eşlemenizi ve bir veya iki örnek dokümanı paylaştıysanız muhtemelen yardımcı olacaktır. Ayrıca, şu anda sahip olduğunuz sorgu türü. – Val

+0

{ "ESIndex": { "eşleştirmeleri": { "user_posts": { "özellikleri": { "post": { "type": "string" }, "kullanıcı adını": { "type": "uzun" } } } } } } –

cevap

0

Sen araya getirilmesinde script kullanabilirsiniz:

POST index_name/type_name/_search 
{ 
"aggs": { 
    "group By Post Count": { 
    "terms": { 
     "script" : "doc['post'].size()" 
     } 
    } 
    } 
} 

bu size yardımcı olur emin you enable scriptig

Umut olun.

+0

üzgün Hayır, O işe yaramadı! –

+0

Hangi hatayı alıyorsunuz ??? Yoksa bir şey döndürmüyor mu? – Richa

+0

Herhangi bir hata döndürmez, ancak beklenen sonuçları döndürmez. –

1

Bunu yapmanın en iyi yolu, posta sayısını saklamak için ayrı bir alan eklemektir.

Scripts çok verimli değildir (değerler sorgu yürütür her zaman yeniden değerlendirilmeli başladı) ve değeri çok hızlı sorguları ve Toplamalardan yapar düzgün endeksli olsun . Elbette belgeyi her güncellediğinizde bu sayımı güncellediğinizden emin olmanız gerekir.

+0

Tamam! Teşekkürler mbudnik –

İlgili konular