elasticsearch - Elasticsearch - 没有应用别名过滤器
问题描述
我们使用 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 管理和快速部署测试环境。
解决方案
伟大的开始!您只是缺少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"
}
}
}
}
}
推荐阅读
- javascript - 如何将 svg 水以角度填充动态
- sql - Hive Exists 条件不适用于多种条件
- mysql - 获取列总和并将其用于分配值
- matlab - 如何结合图像数据存储在 MATLAB 上训练双输入神经网络?
- excel - 通过 VBA .exe 执行使 PowerShell 控制台保持打开状态
- ansible - AWX 1.0.7.2:另一个使用 CLI 正常运行但使用 AWX 失败的 ansible playbook
- asp.net-core - 如何在 ASP Net Core 中返回文件链接?
- php - 如何将 javascript 变量给出的值传递给 PHP 变量?
- sql - ORACLE BIPUBLISHER SQL 查询执行时间过长
- qtwebengine - QWebChannel:在 QtCreator 之外运行时构造崩溃