gpt4 book ai didi

elasticsearch - 如何限制索引中ElasticSearch文档的最大数量?

转载 作者:行者123 更新时间:2023-12-02 23:10:42 27 4
gpt4 key购买 nike

我已经安装了Elastic Search(7.x版)集群并创建了一个新索引。我想限制此索引中的最大文档数。假设有10000个文档排在最前面。

天真的解决方案是在向其中插入新文档之前查询文档数量。但是此方法可能不准确,而且性能较差(2个请求...)。

怎么做对?

最佳答案

最佳做法是使用基本许可证中的Index Life Management,它在Elastic v7.3 +中默认启用

您可以在文档数上设置rollover action(我最多输入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"
}
}

关于elasticsearch - 如何限制索引中ElasticSearch文档的最大数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60965964/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com