Elasticsearch сводит иерархию объектов к парам ключ/значение, потому что в Lucene нет понятия внутренних объектов, как в JSON. Это означает, что нельзя запросить каждый объект независимо от других объектов в массиве. Рассмотрим приведенный ниже пример:
{ "users: [{ "name": "Гена", "age": 26}, { "name": "Вася", "age": 32 }] }
Этот массив объектов хранится так:
{ "users.name": ["Гена", "Вася"], "users.age": [32, 26] }
Массив содержит два пользовательских объекта со свойствами name и age. Когда этот массив хранится в Lucene, все значения свойства в объектах добавляются в виде массива в одно поле — в данном случае поля с именами users.name и users.age. При этом связи между свойствами теряются.
В новой статье в нашем блоге разобрались какие бывают типы данных в Elasticsearch.
Post #82
828