Как я могу получить только сопоставление детей только?

Рассмотрим очень простую модель, в которой у нас есть места, и каждое расположение может иметь ноль или более событий. Местоположение будет иметь свойства, такие как имя, описание и данные 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" }
        }
    }
}

Может ли кто-нибудь пролить свет? Я не знаю, с чего начать ...

8
задан Pawel Krakowiak 15 September 2011 в 13:46
поделиться