Rozważ bardzo prosty model, w którym mamy lokalizacje, a każda lokalizacja może mieć zero lub więcej zdarzeń. Lokalizacja ma właściwości takie jak nazwa, opis i dane punktu geograficznego (lon/lat). Zdarzenie powinno być dołączone do jednej lokalizacji (jej rodzica) i powinno mieć nazwę i opis.Jak mogę pobrać tylko pasujące dzieci?
{
"location" : {
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" },
"geo": { "type": "geo_point" },
"exhibits": {
"type": "nested",
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
}
}
Co chcę móc to zrobić, jest wysłanie zapytania do dokumentów podrzędnych (zdarzenia) przeprowadzenia wyszukiwanie pełnotekstowe na ich nazwami i opisami. Chciałbym odzyskać pasujące zdarzenia i móc również uzyskać nazwę nadrzędnej lokalizacji. Chciałbym również zawęzić wyniki ustawione przez współrzędne lokalizacji. Nie chcę otrzymywać żadnych zdarzeń, które nie pasują do zapytania. Czy to możliwe w Elastic Search? Jakich typów zapytań powinienem używać?
Próbowałem wstawiania zdarzeń jako właściwości tablicy pod lokalizację (patrz wyżej) i przy użyciu kwerendy nested
, ale nie zwraca rodzaju wyników, które chcę (myślę, że zwraca całą lokalizację, w tym wszystkie zdarzenia, nawet te, które nie pasują do mojego zapytania). Próbowałem umieszczać zdarzenia w osobnym indeksie (mapowanie?) Dostarczając właściwość _parent, a następnie wykonując kwerendę top_children
w lokalizacjach, ale nie otrzymałem żadnych wyników.
{
"exhibit": {
"_parent": { "type": "locations" },
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
Czy ktoś może rzucić trochę światła? Nie wiem od czego zacząć ...
Bardzo pomocna, dziękuję za udostępnienie. Jakiego JSON używasz do dodania nowej wystawy do lokalizacji? – gjb
Fajnie, ale jak odzyskać nazwisko rodziców? '" fields ": [" _parent "," name "," _source "]' Czy pobierze nazwę dziecka, prawda? – Yeggeps
@ Eggeps: Tak, zapytanie szuka dzieci jakiegoś dokumentu. To, o co prosisz, nie należy do mojego scenariusza. –