Политика индексации или шаблон индекса для Elasticsearh
У меня есть кластер elasticsearch для хранения журналов, и у меня есть такие индексы
logs-2021.01.01
logs-2021.01.02
logs.2021.01.03 ...etc
поэтому индексы создаются ежедневно, и у меня есть шаблон индекса для этих индексов
PUT _index_template/template_1
{
"index_patterns": ["logs*"],
"template": {
"settings": {
"number_of_shards": 6,
"number_of_replicas": 1
}
но я хочу убедиться, что индексы старше 1 дня имеют 0 реплик для экономии места на диске, а индексы младше 1 дня остаются с 1 репликой (чтобы в случае потери сервера у меня были данные на сегодня)
как я могу сделать это с помощью метода elasticsearch? Я думаю о сценарии bash, который выполняется cron, который получает все индексы старше 1 дня и создает 0 реплик, но я не хочу использовать для этого внешние сценарии Спасибо за вашу помощь
2 ответа
Вы можете использовать концепцию ILM (управление жизненным циклом индекса) Elasticsearch.
В этом случае вы можете создать политику с различным состоянием и выполнять определенные действия в каждом состоянии.
Вы можете указать условие, когда индекс переходит в следующее состояние. вы можете дать свое условие на основе вашего сценария.
PUT _ilm/policy/my_policy
{
"policy": {
"phases": {
"warm": {
"actions": {
"allocate" : {
"number_of_replicas" : 0
}
}
}
}
}
}
https://www.elastic.co/guide/en/elasticsearch/reference/current/getting-started-index-lifecycle-management.htmlhttps://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-allocate.html
Это не политика полного доказательства, но вы можете использовать эту концепцию для своего сценария.
Возможно, вы можете использовать это: https://www.elastic.co/guide/en/elasticsearch/reference/current/ilm-allocate.html
Используйте iml police для назначения реплик для разных фаз.