#elasticsearch #elastic-stack #elasticsearch-5 #elasticsearch-plugin #elasticsearch-dsl
Вопрос:
У меня ежедневно создаются индексы, эти индексы заполняются агентом, который собирает журналы каждую секунду дня, и я переиндексирую их (по полю) в новые индексы с помощью _reindex api.
Как я могу сказать _reindex api, чтобы он все еще переиндексировал, пока исходный индекс все еще получает новые документы ?
Любая помощь будет действительно оценена!
Спасибо
Ответ №1:
вы не можете принудительно подключить API переиндексации к сети для переиндексации новых полученных документов.
но у меня есть решение. вы можете добавить поле даты (index_time) в исходный индекс. напишите ежечасное задание хрона для запуска API переиндексации с запросом для получения индексированных документов за последний час через index_time.
POST _reindex
{
"source": {
"index": "my-index-000001",
"query": {
"filter" :{
"query": {
"range": {
"index_time": {"gte" : "now-1h"}
}
}
}
}
},
"dest": {
"index": "my-new-index-000001"
}
}
Комментарии:
1. Привет, Хамид, спасибо за ответ, на самом деле я не знаю, как вызвать _reindex api с заданием cron, есть идеи, пожалуйста ?
2. вы используете ОС на базе Linux?
3. На самом деле я использовал объект cronjob из k8s.
4. Позвольте мне вернуться к вашему ответу, на самом деле у меня нет доступа к fluentd, поэтому я не могу редактировать исходный индекс ( для добавления упомянутого поля), есть ли другой способ, которым я могу переиндексировать в режиме реального времени?
5. есть ли какое-либо поле с отметкой времени? logstash по умолчанию помещает index_time в поле метки времени. поделитесь документом.