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