簡體   English   中英

如何限制索引中 ElasticSearch 文檔的最大數量?

[英]How to limit max number of ElasticSearch documents in a index?

我已經安裝了一個 Elastic Search(7.x 版)集群並創建了一個新索引。 我想限制此索引中的最大文檔數。 假設頂部有 10000 個文檔。

天真的解決方案是在插入新文檔之前查詢文檔的數量。 但是這種方法可能不准確並且性能也很差(2個請求......)。

怎么做才對?

最佳實踐是使用基本許可證中的索引生命管理,並且在 Elastic 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"
  }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM