elasticsearch - Elasticsearch:为满足特定条件的模板创建别名
问题描述
定义索引模板时是否可以定义不同的别名。不同的别名将引用满足特定条件的索引名称。
例子:
{
"index_patterns":[
"*employee_records*"
],
"settings":{
"number_of_shards":3
},
"mappings":{
"_doc":{
"dynamic_templates":[
// Dynamic Mapping
]
}
},
"aliases":{
"employee_records":{}
}
}
假设我们创建多个索引,例如
- science_dept_employee_records_2015
- science_dept_employee_records_2016
- maths_dept_employee_records_2015
- maths_dept_employee_records_2016
在定义索引模板时,这些索引都不存在。映射将保持不变。我想为上述场景 science_dept_employee_records
&定义两个别名maths_dept_employee_records
。
我能想到的一种方法是复制索引模板,以便为
"index_patterns":[
"maths_dept_employee_records*"
]
和另一个别名
"index_patterns":[
"science_dept_employee_records*"
]
但是,这会在多个模板中引入大量重复项。有没有更简洁的方法来实现这一点?
解决方案
实现此目的的一种方法是使用多个模板与下面的排序匹配。
一个模板定义了所有的映射和设置,并且具有最低的顺序(首先应用):
{
"index_patterns":[
"*employee_records*"
],
"order": 1,
"settings":{
"number_of_shards":3
},
"mappings":{
"_doc":{
"dynamic_templates":[
// Dynamic Mapping
]
}
}
}
另一个模板定义maths_dept_employee
了更高阶索引的别名,并在接下来应用:
{
"index_patterns":[
"maths_dept_employee_records*"
],
"order": 2,
"aliases":{
"maths_dept_employee_records":{}
}
}
science_dept_employee
指数也是一样:
{
"index_patterns":[
"science_dept_employee_records*"
],
"order": 2,
"aliases":{
"science_dept_employee_records":{}
}
}
推荐阅读
- node.js - Aws LAMBDA:HTTP POST 请求
- go - `type Name *Name` 是如何工作的?
- boolean - Ada 中的布尔大小
- javascript - 用于不同类型标记的多个 for 循环 - 只有第一个循环有效
- r - 在 VennDiagram 中将标签强制向左
- python-3.x - tkinter 窗口在简单脚本上冻结(没有线程或其他)
- marklogic - QueryBatcher JobReport 错误失败号
- html - 如何在需要时(而不是定期)将服务器发送的事件通知发送到特定的浏览器会话?
- c# - 使用登录屏幕自动登录
- tensorflow - 将 Keras/TF/PyTorch 层分配给硬件类型