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
cevap
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.
üzgün Hayır, O işe yaramadı! –
Hangi hatayı alıyorsunuz ??? Yoksa bir şey döndürmüyor mu? – Richa
Herhangi bir hata döndürmez, ancak beklenen sonuçları döndürmez. –
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.
Tamam! Teşekkürler mbudnik –
Lütfen dizininizin eşlemesini paylaşın. 'GET/index/type/_mapping' – Richa
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
{ "ESIndex": { "eşleştirmeleri": { "user_posts": { "özellikleri": { "post": { "type": "string" }, "kullanıcı adını": { "type": "uzun" } } } } } } –