Вопрос: Можно ли использовать Elasticsearch _reindex
API для установки/сброса "типов данных полей" полей, которые копируются через него?
Этот вопрос возник при просмотре документов Elastics для переиндексации: https://www.elastic.co/guide/en/elasticsearch/reference/6.2/docs-reindex.html
Эти документы показывают, что _reindex
API может изменять объекты во время их копирования. Они приводят пример изменения имени поля:
POST _reindex
{
"source": {
"index": "from-index"
},
"dest": {
"index":"new-index"
},
"script": {
"source": "ctx._source.New-field-name = ctx._source.remove(\"field-to-change-name-of\")"
}
}
Предложение script
приведет к тому, что «новый индекс» будет иметь поле с именем New-field-name
вместо поля с именем field-to-change-name-of
из «от-индекса».
Документация подразумевает, что в функциональности «сценария» имеется большая гибкость, но мне не ясно, включает ли это проецирование типов данных (например, цитирование данных для преобразования их в строки/текст/ключевые слова и/или обработка вещей как литералы, чтобы попытаться превратить строковые данные в нестроки (очевидно, боролись с опасностью)
Если установка типов данных в _reindex
возможна, я не предполагаю, что это будет эффективно и/или не будет (возможно, жестких) ограничений - я просто хочу лучше понять предел функциональности _reindex
(и выясните, могу ли я принудительно указать тип данных всего за одно взаимодействие, вместо того, чтобы устанавливать сопоставление без нового индекса, прежде чем я выполню команду переиндексации)
(P.S. Я работаю над Elasticsearch 6.2, но думаю, что мой вопрос актуален для всех версий с _reindex
API (похоже, все 2.3.0 и выше))