@dexes56
Back-end engineer

ElasticSearch: как корректно искать по вложенным структурам?

В индексе эластика хранятся вложенные структуры данных по которым хочется осуществлять корректный поиск.

Пример индекса:
{
    "title": {"type": "text"},
    "subEntity": {
        "type": "object",
        "properties": {
            "id": {"type": "integer"},
            "value": {"type": "text"}
        }
    }
}

Пример данных:
{
    "title": "Stub",
    "subEntity": [
        {"id": 1, "value": "red"},
        {"id": 2, "value": "yellow"},
        {"id": 3, "value": "green"}
    ]
}

Пример запроса:
{
    "query": {
        "bool": {
            "must": [
                {"match": {"subEntity.id": 1}},
                {"match": {"subEntity.value": "yellow"}}
            ]
        }
    }
}

Естественно поиск будет осуществляться не на уровне одной и той же вложенной структуры (subEntity), а по всем вложенным структурам в рамках одной записи, и по описанному запросу найдётся приведённый выше пример.

Можно ли каким-то образом, не перестраивая индекс, организовать запрос так, чтобы поиск производился в рамках каждой вложенной структуры, а не записи в целом?

Если для корректного поиска по subEntity их всё таки придётся вынести в отдельный индекс, то можно ли получать родительские записи одним запросом?

Версия ES: 6.4
  • Вопрос задан
  • 1108 просмотров
Решения вопроса 2
erniesto77
@erniesto77
oop, rb, py, php, js
надо посмотреть в гугле по запросу "elastic search handle relations"
вот например https://www.elastic.co/guide/en/elasticsearch/guid...
Ответ написан
Комментировать
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Индекс придется перестроить и сделать subEntry типом nested.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 300 000 до 400 000 ₽
SpectrumData Екатеринбург
от 200 000 до 300 000 ₽
LIME Москва
от 280 000 до 350 000 ₽
02 нояб. 2024, в 23:04
80000 руб./за проект
02 нояб. 2024, в 21:08
2000000 руб./за проект