如何为Elasticsearch月度索引指定正则形式的索引模板匹配规则
Elasticsearch 月度索引模板正则匹配正确配置
先修正正则规则
你原有规则存在两个问题:
- 正则末尾多了日维度的匹配段,你需要匹配的是
myindex-yyyy-MM格式,不需要匹配日部分 - Elasticsearch 需要将正则用
/包裹才会识别为正则匹配模式,否则会作为普通通配符字符串处理 - JSON 配置中反斜杠需要额外转义,
\d要写为\\d
最终可直接使用的匹配规则为:/^myindex-\\d{4}-(0[1-9]|1[0-2])$/
如果你允许月份为单数字(比如
myindex-2024-5),可以把月份匹配段改为(0?[1-9]|1[0-2])
7.8及以上版本(新索引模板,推荐)
PUT _index_template/myindex_monthly_template { "index_patterns": ["/^myindex-\\d{4}-(0[1-9]|1[0-2])$/"], "template": { "settings": { "number_of_shards": 3, "number_of_replicas": 1 // 补充你需要的其他索引配置 }, "mappings": { "properties": { // 补充你需要的字段映射配置 } } }, "priority": 200, "composed_of": [] }
7.8以下版本(旧版索引模板)
PUT _template/myindex_monthly_template { "index_patterns": ["/^myindex-\\d{4}-(0[1-9]|1[0-2])$/"], "order": 200, "settings": { "number_of_shards": 3, "number_of_replicas": 1 // 补充你需要的其他索引配置 }, "mappings": { "properties": { // 补充你需要的字段映射配置 } } }
配置验证
执行以下请求验证匹配是否符合预期:
// 验证合法月度索引会匹配到模板 POST _index_template/_simulate { "index_name": "myindex-2024-05" } // 验证非法索引不会匹配到模板 POST _index_template/_simulate { "index_name": "myindex-abc" }
如果是旧版本模板可以直接创建测试索引验证匹配结果。
内容的提问来源于stack exchange,提问作者a.ilchinger
相关产品推荐
相关产品推荐

