Nie mogę utworzyć elastycznej agregacji wyszukiwania + filtru do pracy z zagnieżdżonymi polami. Schemat danych (odpowiednia część) jest tak:Agregacja elastyczna wyszukująca nie działa z polami typu zagnieżdżonego
"mappings": {
"rb": {
"properties": {
"project": {
"type": "nested",
"properties": {
"age": {
"type": "long"
},
"name": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
Zasadniczo „rb” obiekt zawiera zagnieżdżone pole o nazwie „projekt”, który zawiera dwa kolejne pola - „nazwa” i „wiek”. Kwerendy biegnę:
"aggs": {
"root": {
"aggs": {
"group": {
"aggs": {
"filtered": {
"aggs": {
"order": {
"percentiles": {
"field": "project.age",
"percents": ["50"]
}
}
},
"filter": {
"range": {
"last_updated": {
"gte": "2015-01-01",
"lt": "2015-07-01"
}
}
}
}
},
"terms": {
"field": "project.name",
"min_doc_count": 5,
"order": {
"filtered>order.50": "asc"
},
"shard_size": 10,
"size": 10
}
}
},
"nested": {
"path": "project"
}
}
}
Ta kwerenda ma produkować 10 najlepszych projektów (pole project.name), które pasują do filtra datę, posortowane według mediany wieku, ignorując projekty z mniej niż 5 wspomina w bazie danych . Medianę należy obliczyć tylko dla projektów pasujących do filtra (zakres dat).
Pomimo ponad sto tysięcy obiektów w bazie danych, ta kwerenda tworzy pustą listę. Brak błędów, po prostu pusta odpowiedź. Próbowałem go zarówno na ES 1.6 i ES 2.0-beta.
To działa! Po prostu musiałem zwiększyć shard_size do 100, aby uzyskać 10 wartości wstecz. Czy możesz wyjaśnić, dlaczego mój oryginalny wariant nie zadziałał? Czy jest to ograniczenie w ES, że nie obsługuje filtrów wewnątrz zagnieżdżonych pól? – extesy
Wewnątrz agregacji 'zagnieżdżonej' można odwoływać się tylko do zagnieżdżonych pól. Poza tym lepiej jest najpierw odfiltrować dane oparte na 'last_updated' i dopiero wtedy operować na zagnieżdżonych danych. – Val
@ Val - Czy możesz mi powiedzieć, jak mogę to zrobić w przypadku wiadra wielowartościowego? Oddzielne pytanie - http://stackoverflow.com/questions/43451667/elasticsearch-ordering-aggregation-by-nested-aggregation-on-nested-field –