一尘不染

将Logstash与Elasticsearch输出一起使用时.raw字段来自哪里?

elasticsearch

当同时使用Logstash和Elasticsearch时,带有.raw的字段会附加到已分析的字段中,因此,当使用诸如Kibana之类的工具查询Elasticsearch时,可以按原样使用字段的值,而无需按词拆分。

我用最新的所有版本构建了ELK堆栈的新安装,并注意到.raw不再像在较早版本的堆栈中那样创建我的字段。有很多人在Elasticsearch上发布了创建模板的解决方案,但是我无法找到很多有关
为什么可以 解决问题的信息。为了更好地理解更广泛的问题,我提出以下具体问题:

.raw字段来自哪里?

我以为Logstash在插入文档时在分析字符串和原始字符串时填充了Elasticsearch,但是考虑到此修复程序位于Elasticsearch模板中的事实,我质疑我的假设是否正确。


阅读 586

收藏
2020-06-22

共1个答案

一尘不染

您的假设是正确的,即这些.raw字段是Logstash创建IF的默认索引模板manage_template: true(默认情况下)中包含的字符串字段的动态模板的结果。

Logstash创建的默认模板(从2.1开始)可以在此处看到。如您在第26行所看到的,所有字符串字段(message一个字符串字段除外)都not_analyzed
.raw创建了一个子字段。

但是,该模板在最新的Logstash版本中没有更改,可以在template.json更改历史记录中看到,因此您的安装肯定有其他问题,或者您更改了Logstash配置以使用自己的索引模板(无.raw字段)代替。

如果运行curl -XGET localhost:9200/_template/logstash*,应该会看到Logstash创建的模板。

2020-06-22