繁体   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