elasticsearch - 在 ElasticSearch 索引模板别名中使用通配符
问题描述
这是我的索引模板(简化):
{
"template": "user-*",
"mappings" : {
"ESHOP_USER" : {
"properties" : {
"id" : {
"type" : "long"
},
"nickname" : {
"type" : "text"
},
"createTime" : {
"type" : "keyword"
},
"updateTime" : {
"type" : "keyword"
}
}
}
},
"aliases" : {
"user-test-alias" : {
"index" : "user-test*"
},
"user-prod-alias" : {
"index" : "user-prod*"
}
}
}
我想做的事:
具有名称模式的索引user-*
共享相同的模板,我想添加user-test-alias
到名称为模式的所有索引user-test*
,以及user-prod-alias
名称为模式的所有索引user-prod*
。
我得到了什么:
使用上面的模板,我得到了所有具有名称模式的索引,user-*
得到了两个别名:user-test-alias
和user-prod-alias
.
我知道如果我将此模板拆分为测试和生产模板,或者POST /_aliases
在创建索引后使用,我可以解决问题。但是有没有办法只用一个索引模板来实现我的目标?
解决方案
我要做的是使用 3 个模板:
- 两种环境共有的一种
- 一个用于测试(仅用于别名)
- 一个用于产品(也仅用于别名)
首先应用的第一个模板(通用):
{
"template": "user-*",
"order": 0,
"mappings" : {
"ESHOP_USER" : {
"properties" : {
"id" : {
"type" : "long"
},
"nickname" : {
"type" : "text"
},
"createTime" : {
"type" : "keyword"
},
"updateTime" : {
"type" : "keyword"
}
}
}
}
}
接下来应用的第二个模板(测试别名):
{
"template": "user-test-*",
"order": 1,
"aliases" : {
"user-test-alias" : {
"index" : "user-test*"
}
}
}
接下来应用第三个模板(产品别名):
{
"template": "user-prod-*",
"order": 1,
"aliases" : {
"user-prod-alias" : {
"index" : "user-prod*"
}
}
}
推荐阅读
- android - 查看 SQLite 数据库时,片段列表视图崩溃
- javascript - 分配失败 - loopback.js 中的 javascript 堆内存不足
- ajax - 如何使用 Ajax 并在另一个 URL 上发布数据请求?
- xml - 如何从 Scala 中的“#PCDATA”获取数据?
- trace32 - 如何从 t32 cmm 脚本中的给定地址查看变量名?
- javascript - ESRI TypeError:this.spatialReference 未定义
- python - 从文件中读取字典并将其转换为 python 数据类型 dict
- asp.net-mvc - 如何保护 asp.net mvc5 应用程序?
- prestashop - Prestashop 1.7 如何添加换行符
- python - 将 1 维 numpy 数组克隆为 3 维时出现维度顺序问题