Что такое Nested поля в Elastic Search

«Что такое Nested поля в Elastic Search» — вопрос из категории Базы данных, который задают на 24% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Nested поля в Elasticsearch позволяют индексировать массивы объектов как отдельные документы внутри основного документа. Это решает проблему "плоского" хранения, когда элементы массива теряют свою индивидуальность при индексации.

Основные особенности:

  • Каждый объект в массиве индексируется как скрытый отдельный документ
  • Сохраняются связи между полями внутри одного объекта массива
  • Для поиска по nested полям нужно использовать специальный nested query

Пример:

PUT /products
{
  "mappings": {
    "properties": {
      "reviews": {
        "type": "nested" 
      }
    }
  }
}

Запрос к nested полю:

GET /products/_search
{
  "query": {
    "nested": {
      "path": "reviews",
      "query": {
        "bool": {
          "must": [
            { "match": { "reviews.author": "John" }},
            { "range": { "reviews.rating": { "gte": 4 }}}
          ]
        }
      }
    }
  }
}