Проблема с настройкой политики жизненного цикла индекса ElasticSearch с именем индекса даты конвейера
Я новичок в настройке правильной политики жизненного цикла, поэтому надеюсь, что кто-то может помочь мне с этим. Итак, у меня есть существующий индекс, который создается еженедельно. Это сторонняя интеграция (они предоставили мне конвейер и шаблон индекса для входящих журналов). Журналы создаются еженедельно по схеме "имя-ГГГГ-ММ-ДД". Я пытаюсь настроить политику жизненного цикла для этих индексов, чтобы они переходили от горячего-> теплого-> удаления. Пока что я сделал следующее:
Обновлен шаблон индекса, чтобы добавить политику и установить псевдоним:
{
"index": {
"lifecycle": {
"name": "Cloudflare",
"rollover_alias": "cloudflare"
},
"mapping": {
"ignore_malformed": "true"
},
"number_of_shards": "1",
"number_of_replicas": "1"
Для существующих индексов установите псевдоним и какой из них является индексом для записи:
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "cloudflare-2020-07-13",
"alias" : "cloudflare",
"is_write_index" : true
}
}
]
}
POST /_aliases
{
"actions" : [
{
"add" : {
"index" : "cloudflare-2020-07-06",
"alias" : "cloudflare",
"is_write_index" : false
}
}
]
}
Как только я это сделал, я начал видеть следующие 2 ошибки (по 1 в каждом индексе):
Я не уверен, почему ошибка "не индекс записи" появляется в старом индексе. Возможно, это связано с тем, что он все еще "горячий" и пытается переместить его в другую фазу, не являясь индексом записи?
Вторая ошибка связана с тем, что имя индекса неверно для ролловера?
Мне также неясно, подходит ли это для переноса позиции. Эти индексы создаются еженедельно, и я полагаю, что это нормально. Я бы подумал, что обычно вы создаете один индекс и позволяете политике разделять более старые на основе ваших критериев (размер, возраст и т. Д.). Следует ли мне изменить это или я могу заставить эту политику работать с существующими еженедельными файлами? Если вам это нужно, вот часть конвейера, который я импортировал в ElasticSearch, который, как мне кажется, отвечает за именование индекса:
{
"date_index_name" : {
"field" : "EdgeStartTimestamp",
"index_name_prefix" : "cloudflare-",
"date_rounding" : "w",
"timezone" : "UTC",
"date_formats" : [
"uuuu-MM-dd'T'HH:mm:ssX",
"uuuu-MM-dd'T'HH:mm:ss.SSSX",
"yyyy-MM-dd'T'HH:mm:ssZ",
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"
]
}
},
Итак, для меня на данный момент более важной ошибкой является "number_format_exception". Я думаю, это из-за этой настройки, которую я вижу в индексе (provided_name):
{
"settings": {
"index": {
"lifecycle": {
"name": "Cloudflare",
"rollover_alias": "cloudflare"
},
"mapping": {
"ignore_malformed": "true"
},
"number_of_shards": "1",
"provided_name": "<cloudflare-{2020-07-20||/w{yyyy-MM-dd|UTC}}>",
"creation_date": "1595203589799",
"priority": "100",
"number_of_replicas": "1",
Я полагаю, что это "provided_name" устанавливается из конвейера "date_index_name", который я указал выше. Если это проблема, есть ли способ создать фиксированное имя индекса через конвейер приема без его изменения в зависимости от даты? Я бы предпочел просто создать фиксированный индекс и позволить политике жизненного цикла обрабатывать разделение (например, 0001, 0002 и т. Д.).
Я искал способ создать фиксированное имя индекса без процессора "date_index_name", но пока не нашел способа сделать это. Или, если я могу создать имя индекса с датой и добавить суффикс, который позволит диспетчеру политик LifeCycle (ILM) добавлять инкрементный номер в конце, это также может сработать. Любая помощь здесь будет принята с благодарностью!
1 ответ
Основная проблема заключается в том, что существующие индексы не заканчиваются порядковым номером (например, 0001, 0002 и т. Д.), Поэтому ILM на самом деле не знает, как действовать.
Имя этого индекса должно соответствовать шаблону индекса шаблона и заканчиваться числом
Лучше позволить ILM управлять созданием и обновлением индекса, поскольку это именно то, что он должен делать. Все, что вам нужно сделать, это продолжать писать то же самоеcloudflare
псевдоним и все тут. Нет необходимости вdate_index_name
процессор приема.
Итак, ваш шаблон индекса и так верен.
Затем вам нужно загрузить начальный индекс
PUT cloudflare-2020-08-11-000001
{
"aliases": {
"cloudflare": {
"is_write_index": true
}
}
}
Затем вы можете либо переиндексировать свои старые индексы в индексы, управляемые ILM, либо применить политики жизненного цикла к своим старым индексам.