У нас есть некоторые устаревшие поля в эластичном поисковом индексе, которые вызывают у нас некоторые проблемы, и мы хотели бы выполнить замену строки по всему индексу.
Например, некоторые старые метки времени хранятся в формате 2000-01-01T00:00:00.000+0100
, но должны храниться как 2000-01-01T00:00:00.000+01:00
.
Я попытался запустить следующий запрос:
POST /my_index/_update_by_query
{
"script":
{
"lang": "painless",
"inline": "ctx._source.timestamp = ctx._source.timestamp.replace('+0100', '+01:00')"
}
}
Я запускаю запрос в Kibana, но всегда получаю тайм-аут запроса - я думаю, это не обязательно плохо, учитывая, что база данных огромна, однако я никогда не вижу обновленных полей.
Есть ли способ увидеть статус такого запроса?
Я также пытался создать поисковый запрос для обновления, но безуспешно:
GET /my_index/_search
{
"query": {
"query_string": {
"query": "*0100",
"allow_leading_wildcard": true,
"analyze_wildcard": true,
"fields": ["timestamp"]
}
}
}
Который, к сожалению, всегда возвращает пустой набор - не уверен, что может быть не так.
Каким будет правильный способ добиться такого обновления?
wait_for_completion=false
для запуска задачи в фоновом режиме, см. здесь как - person Val   schedule 07.06.2021"timestamp" : { "type" : "date" }
— так есть ли способ запросить эти неработающие поля? - person Vojtěch   schedule 07.06.2021+0100
совпадает с+01:00
, оба являются допустимым синтаксисом для часового пояса GMT+1. - person Val   schedule 07.06.2021+01:00
вместо+0100
, поэтому я хотел бы как-то заменить это в ES. - person Vojtěch   schedule 07.06.2021