Как ограничить максимальное количество документов ElasticSearch в индексе? - PullRequest
1 голос
/ 01 апреля 2020

Я установил кластер Elasti c Search (версия 7.x) и создал новый индекс. Я хочу ограничить максимальное количество документов в этом индексе. Скажем, 10000 документов top.

Наивным решением является запрос количества документов перед вставкой в ​​него нового документа. Но этот метод может быть не точным, а также иметь плохую производительность (2 запроса ...).

Как это сделать правильно?

1 Ответ

1 голос
/ 01 апреля 2020

Рекомендуется использовать Index Life Management , который входит в базовую лицензию c и включен по умолчанию в Elasti c v7.3 +

. Вы можете установить Ролловер на номер документа (я поставил 5 макс. Документов):

PUT _ilm/policy/my_policy
{
  "policy": {
    "phases": {
      "hot": {
        "actions": {
          "rollover": {
            "max_docs": 5
          }
        }
      }
    }
  }
}

Теперь я создаю шаблон с политикой my_policy:

PUT _template/my_template
{
  "index_patterns": [
    "my-index*"
  ],
  "settings": {
    "index.blocks.read_only" : true,
    "index.lifecycle.name": "my_policy",
    "index.lifecycle.rollover_alias": "my-index"
  }
}

Обратите внимание, что я установил настройку "index.blocks.read_only" : true, потому что когда будет применен ролловер, он создаст новый индекс с параметром read_only.

Теперь я могу создать свой индекс:

PUT my-index-000001
{
  "settings": {
    "index.blocks.read_only": false
  },
  "aliases": {
    "my-index": {
      "is_write_index": true
    }
  }
}

Это Это ! После 5 документов будет создан новый индекс только для чтения, и псевдоним будет при записи на него.

Вы можете проверить по индексу некоторые новые документы с псевдонимом:

PUT my-index/_doc/1
{
  "field" : "value"
}

Кроме того, по умолчанию политика ilm будет применяться каждые 10 минут, вы можете изменить это для проверки с помощью:

PUT /_cluster/settings
{
  "persistent": {
    "indices.lifecycle.poll_interval": "5s"
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...