如何限制索引中 ElasticSearch 文档的最大数量?
How to limit max number of ElasticSearch documents in a index?
我已经安装了 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"
}
}
我已经安装了 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"
}
}