Bazı 26 sonucu döndüren bir ES sorgum var.Tarihe göre Elasticsearch toplama histogram artık komut dosyasıyla çalışmıyor
"aggregations" : {
"by_date" : {
"date_histogram" : {
"field" : "startDate",
"interval" : "month"
}
}
}
arama sonucunun toplama öğesi şöyle görünür: Şimdiye kadar iyi
"aggregations": {
"date_histogram": {
"buckets":[
{"key_as_string":"2016-01-01T00:00:00.000Z", "key":1451606400000, "doc_count":18},
{"key_as_string":"2016-02-01T00:00:00.000Z", "key":1454284800000, "doc_count":8}
]
}
}
sorgu şöyle toplama histogram elemanı vardır. Ancak istediğim, belirli ölçütlerle eşleşmeyen öğeleri kaldırmak için arama sonuçlarına karşı bazı komut dosyaları yapmaktır.
"aggregations" : {
"by_date" : {
"date_histogram" : {
"field" : "startDate",
"interval" : "month",
"script" : {
"inline" : "if (condition) {return 1} else {return 0}"
}
}
}
Maalesef bu tek sonuç kova sonuçları ve toplama kaybolur:
- senaryoyu
inline
azaltılması: ben denedim ne"date_histogram": { "buckets": [ {"key_as_string": "1970-01-01T00:00:00.000Z", "key": 0, "doc_count": 26 } ] }
yüzden sorguya Bu ekledi öğe sadece
return 1
. Bu hala,value
tarih alanının kendiliğinden geri dönen - kümelenmesi sonucunu doğurur. Sonuçlar
ClassCastException
- sonuç ES yapılandırma ayarlarını kontrol eden - numaralı olmalıdır.
script.engine.groovy.{file|indexed|inline}.{aggs|mapping|search|update|plugin}
,script.inline
,script.indexed
vescript.aggs
için her şeyi etkinleştirdim. - 2.0 breaking aggregation changes'u kontrol etti, ancak hiçbiri alakalı görünmüyor.
Ben bana senaryo olmadan toplanmasını yapalım olur (ziyade toplama kısmı yerine) sorguda kendisi söz konusu filtreyi haiz ayrı sorgu çalıştırabilirsiniz biliyorum. Asıl nokta, aynı dizi arama sonucunu alan ve farklı filtreleme türleri (ve birleştirme) yapan bir düzine farklı topluluğum olmasıdır. Aynı sorguyu birden çok kez çalıştırmak karşı üretken ve kabul edilemez. Bildiğim kadarıyla, bu , 1.4.4 sürümünde çalışmak için kullanmış ancak artık 2.2.0 sürümünde çalışmamaktadır.
Bu bir hata mı? Ya da belki de aynı mantık farklı şekilde yeniden kullanılabilir, ör. Bucket Script Toplulama veya başka herhangi biriyle?