Właśnie przełączyłem się na Elastic Search 1.5.0 i do tej pory nie mogę wykonać inner_hits pracy z zagnieżdżonym filtrem, mimo że działa dobrze z zagnieżdżonym zapytaniem.Wewnętrzne odsłon nie działa z filtrem zagnieżdżonym?
Powiedzmy, że chcemy odzyskać wewnętrzną obiektu zagnieżdżonego aktorów w filmowego obiektu.
Kiedy uruchomić następującą zagnieżdżone zapytanie:
Składnia 1
GET my_index/movie/_search
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "actors",
"query": {
"match": {
"actors.id": 12345
}
},
"inner_hits" : {}
}
}
}
}
}
=> I dostać inner_hits jako udokumentowane here, który jest po prostu w porządku.
ale gdy próbuję robić równoważne zapytanie o zagnieżdżonego filtrem:
Syntax 2
GET my_index/movie/_search
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "actors",
"filter": {
"term": {
"actors.id": 12345
}
},
"inner_hits" : {}
}
}
}
}
}
=> I pojawia się następujący błąd analizowania
QueryParsingException [ [my_index] [zagnieżdżony] wymaga "zapytania" lub pola "filtr"]
(a ta ostatnia kwerenda działa poprawnie, gdy usunę inner_hits - z wyjątkiem oczywiście, że nie dostanę wewnętrzne ciosy ...)
Czy jest coś złego w składni używam lub jest inner_hits jeszcze nie zaimplementowane z zagnieżdżonym filtrem?
góry dzięki
Edit 3-30-2015
Współpracuje ze składnią przewidzianego poniżej @mdewit (dzięki!)
Składnia 3
GET my_index/movie/_search
{
"query": {
"nested": {
"path": "actors",
"query": {
"filtered": {
"filter": {
"term": {"actors.id": 12345}
}
}
},
"inner_hits" : {}
}
}
}
mimo że ta składnia nie pasuje do Nested Filter doc
=> Nadal nie rozumiem, co jest nie tak ze składnią 2. Wydaje mi się, że jest to błąd związany z ES.
Edycja 22.04.2015: naprawiono błąd w ES 1.5.1, patrz mój komentarz poniżej
Tak, działa, dzięki za to! Niemniej jednak pozostawię to pytanie otwarte, ponieważ składnia, którą podałeś, nie jest dokładnie taka, jak opisana w oficjalnej dokumentacji zagnieżdżonego filtru: http://www.elastic.co/guide/en/elasticsearch/reference/1.x/ query-dsl-nested-filter.html Wciąż myślę, że coś jest nie tak z komunikatem o błędzie, który otrzymałem z ES w przykładzie, który podałem – benoit
To naprawdę działa. –