首页 > 解决方案 > Logstash 可以根据字段选择为 elasticsearch 设置输出选项

问题描述

假设我有一些带有 join 字段的文档,所以它们可能有 parent(eg [join_field][parent]) 字段,因此根据文档,我需要将其传递给 logstash elasticsearch 输出中的 _routing,

...
output {
  elasticsearch {
    ...
    routing => "%{[join_field][parent]}"
  }
}

现在,如果文档中没有 join_field,上面将%{[join_field][parent]}在 ES 中将其路由设置为字面意思。

无论如何我可以将其设为可选,因此只有在 [join_field][parent] 存在时,ES 输出才会设置路由?

或者这里唯一的方法是在字段上设置 if else 条件并为每个设置单独的输出(但是对于许多选项有多个 if 感觉很奇怪)?这也可能有任何性能问题吗?

...
output {
  if [join_field][parent] {
    elasticsearch {
      ...
      routing => "%{[join_field][parent]}"
    }
  } else { 
    elasticsearch {
      ...
    }
  }
}

标签: elasticsearchlogstashelastic-stacklogstash-configuration

解决方案


推荐阅读