Используйте Reindex API .Вот что вы можете сделать.
Сводка шагов:
- Создать
destination_index
(пустышка).Убедитесь, что сопоставление точно с сопоставлением source_index
- Использование Reindex API , переиндексация , что конкретного документа от
source_index
до desitnation_index
.Во время этой операции обновите _id (я упомянул скрипт) - Переиндексируйте этот документ обратно с
desitnation_index
до source_index
Переиндексируйте запрос
Шаг 1. Скопируйте документ из source_index в destination_index.(Со сценарием)
POST _reindex
{
"source": {
"index": "source_index",
"query": {
"match": {
"_id": "1"
}
}
},
"dest": {
"index": "destination_index"
},
"script": {
"inline": "ctx._id=2",
"lang": "painless"
}
}
Обратите внимание, как я добавил script
в приведенном выше запросе, который изменит _id (_id is set as 2)
документа.Ваш целевой_индекс будет иметь все поля с точно такими же значениями, как у источника, за исключением поля _id
.
Шаг 2. Скопируйте этот документ из конечного_индекса в исходный_индекс *
POST _reindex
{
"source": {
"index": "destination_index",
"query": {
"match": {
"_id": "2"
}
}
},
"dest": {
"index": "source_index"
}
}
Теперь выполните поиск по source_index
, в нем будет два документа с разными _ids (_id=1 and _id=2)
, имеющие одинаковое содержание.
Надеюсь, это поможет!