Рассмотрим очень простую модель, в которой у нас есть места, и каждое расположение может иметь ноль или более событий. Местоположение будет иметь свойства, такие как имя, описание и данные Geo Point (LON / LAT). Событие должно быть прикреплено к одному расположению (его родитель) и должно иметь имя и описание.
{
"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" }
}
}
}
}
}
То, что я хочу сделать, - это запросить для дочерних документов (событий), выполняющих полный текстовый поиск по их именам и описаниям. Я хотел бы вернуть соответствующие события и иметь возможность также получить имя своего родительского местоположения. Я также хотел бы сузить результат, установленный по координатам местоположения. Я не хочу получать какие-либо события, которые не соответствуют запросу. Это возможно в упругом поиске? Какие типы запросов я должен использовать?
Я попробовал положить события в качестве свойства массива в разделе «Расположение (см. Выше) и использование вложенного
Query , но он не возвращает типовые результаты, которые я хочу (я хочу Подумайте, что он возвращает все место, включая все события, даже те, которые не соответствуют моему запросу). Я попытался положить события в отдельный индекс (отображение?), Обеспечивающее свойство _Parent, а затем выполнять Top_children
запрос в местах, но я не получаю никаких результатов.
{
"exhibit": {
"_parent": { "type": "locations" },
"properties": {
"name": { "type": "string", "boost": 2.0, "analyzer": "snowball" },
"description": { "type": "string", "analyzer": "snowball" }
}
}
}
Может ли кто-нибудь пролить свет? Я не знаю, с чего начать ...