我们使用logstash的Elasticsearch输出插件应用索引模板。 我们所有的索引模式都是这样:“-” 我正在尝试使用别名过滤器为每个子系统创建一个别名,但是没有应用过滤器,导致每个索引都配置了所有别名。 (因此,子系统A获得了子系统A和子系统B以及所有其他子系统的别名)
我的模板如下:
{
"index_patterns" : "system-*",
"version" : 1,
"settings" : {
"index.codec": "best_compression"
},
"aliases" : {
"system" : {},
"system-subsystem_a" : {
"bool" : {
"filter" : {
"term" : {"Subsystem" : "subsystem_a"}
}
},
"system-subsystem_b" : {
"bool" : {
"filter" : {
"term" : {"Subsystem" : "subsystem_b"}
}
}
}
}
我尝试了几种不同的变体和组合(不使用“ bool”块。将术语“ Subsystem”更改为“ Subsystem.keyword”等)都得到了相同的结果。
我实际上曾经问过类似的问题:elasticsearch templates - create alias from index_pattern
@ibexit建议为每个子系统创建一个模板,但是Logstash的elasticsearch输出插件不支持多个模板。 我希望避免使用API。使用单个文件可使我更轻松地使用docker-compose管理和快速部署测试环境。
答案 0 :(得分:0)
很好的开始!!您只是在别名中缺少filter
声明:
{
"index_patterns": "system-*",
"version": 1,
"settings": {
"index.codec": "best_compression"
},
"aliases": {
"system": {},
"system-subsystem_a": {
"filter": {
"bool": {
"filter": {
"term": {
"Subsystem": "subsystem_a"
}
}
}
}
},
"system-subsystem_b": {
"filter": {
"bool": {
"filter": {
"term": {
"Subsystem": "subsystem_b"
}
}
}
}
}
}
}
一个更简单的版本,您根本不需要bool/filter
:
{
"index_patterns": "system-*",
"version": 1,
"settings": {
"index.codec": "best_compression"
},
"aliases": {
"system": {},
"system-subsystem_a": {
"filter": {
"term": {
"Subsystem": "subsystem_a"
}
}
},
"system-subsystem_b": {
"filter": {
"term": {
"Subsystem": "subsystem_b"
}
}
}
}
}