[英]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.