Elasticsearch не позволяет изменять определение сопоставления для существующих полей, только добавление новых определений полей, как вы можете проверить здесь .
Таким образом, одна из возможностей:
создать новое определение поля с другим именем, очевидно, для хранения нового типа данных.
Прекратить использование местоположения поле
Другая, но дорогостоящая возможность:
- создать новый индекс с правильным отображением
- выполнить переиндексировать данных из старого индекса в новый индекс
Чтобы переиндексировать данные из старого индекса с правильным форматом в новый индекс, вы можете использовать безболезненный сценарий :
POST /_reindex
{
"source": {
"index": "old_index_name"
},
"dest": {
"index": "new_index_name"
},
"script": {
"lang": "painless",
"params" : {
"location":{
"country" : null,
"state": null,
"city": null
}
},
"source": """
params.location.city = ctx._source.location
ctx._source.location = params.location
"""
}
}
После обновления полей страны и штата для старых данных.
Если вам нужно то же имя индекса, используйте новый индекс, который вы создали с правильным сопоставлением, просто в качестве бэкапа то нужно удалить индекс со старым м приложение и воссоздайте его снова с тем же именем, используя правильное сопоставление и перенесите данные, которые находятся в другом резервном индексе.
Подробнее об изменении сопоставления читайте ИЗМЕНИТЬ ЭЛАСТИ C ПОИСК КАРТЫ .