В настоящее время я строю поиск системы электронной коммерции с помощью ElasticSearch (клиент PHP), но столкнулся с проблемой
Данные, которые я храню, представляют собой смесь простого текста (например, продуктаназвания) и списки (например, цвета, размеры)
Проблема, с которой я столкнулся, заключается в том, что у продукта нет цветов
У меня есть следующие поля
id - integer
title - string
codes - array
properties - array
attributes - array
Поэтому, когда я отправляю товар, он выглядит так
id: 1
title: ABC
codes: ['ABC', '123']
properties: ['purple']
attributes: ['large', 'small']
Это работает, как и ожидалось, но когда я пытаюсь отправить что-то вроде этого
id: 2
title: DEF
codes: ['DEF']
properties: []
attributes: []
Выдаетошибка:
{"error": {"root_cause": [{"type": "mapper_parsing_exception", "reason": "сопоставление объектов для [codes] попыталось проанализировать поле [null]как объект, но нашел конкретное значение "}]," type ":" mapper_parsing_exception "," reason ":" объектное сопоставление для [codes] попыталось проанализировать поле [null] как o bject, но нашло конкретное значение "},"status": 400}
Я попытался сопоставить свои поля, используя это для каждого поля (как показано здесь: https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic.html)
attributes: {
dynamic: true,
properties: []
}
Bно это, похоже, не помогает, и в документах говорится, что вы не можете указать тип массива
Может кто-нибудь указать мне правильное направление?