#elasticsearch #aws-elasticsearch
Вопрос:
В AWS Elasticseach я создал индекс с использованием python и библиотеки Elasticsearch, используя следующую строку кода:
es.indices.create(TABLE_NAME, body='{"settings": { "index.mapping.coerce": true } }', request_timeout=100)
Затем я вставил несколько документов в свой индекс с помощью bulk.
helpers.bulk(es, action, request_timeout=500)
Позже, когда я попытался вставить больше документов, это дало мне эту ошибку:
Сопоставление объектов Elasticsearch для попытался проанализировать поле [] как объект, но нашел конкретное значение
Единственная разница в том, что я изменил тип вставляемого значения (с плавающего на строковое). В этом причина этой ошибки?
Ответ №1:
Да, эта ошибка вызвана изменением типа с float на string.
Таким образом, вы можете либо вставить значение с плавающей точкой, либо удалить индекс, используя следующую команду, и вставить все значения снова.
es.indices.delete(index=TABLE_NAME)
ПРИМЕЧАНИЕ: Не используйте эту команду, если у вас нет старых документов. Эта команда безвозвратно удалит полный индекс вместе со всеми содержащимися в нем документами.