#elasticsearch #elasticsearch-opendistro
#elasticsearch #elasticsearch-opendistro
Вопрос:
Я новичок в эластичном поиске. Мне нужно просмотреть все документы, взять _id
и добавить их в _source
качестве отдельного поля с помощью скрипта. Возможно ли это? Если да, могу ли я привести пример чего-то подобного или ссылку на похожие скрипты? Я не видел ничего подобного в доках. Зачем мне это нужно? — Потому что после этого я буду делать SELECT с помощью Opendistro и SQL. Этот фрейм не может вернуть мне поля, которых нет в источнике. Если кто-нибудь может предложить, я был бы очень благодарен.
Ответ №1:
Есть два варианта:
Первый вариант: добавьте это новое поле в существующий индекс, заполните его и снова создайте новый индекс.
Второй вариант: просто определите новое поле в новом сопоставлении индексов (оставьте все остальные поля одинаковыми), а затем используйте API переиндексации с помощью приведенного ниже скрипта.
"script": {
"source": "ctx._source.<your-field-name> = ctx._id"
}
Комментарии:
1. POST index/_doc/_update_by_query
{ "query": { "match_all": {} }, "script": { "source": "ctx._source.docId = ctx._id" } }
Именно то, что мне нужно, спасибо!