将 Logstash 与 Elasticsearch 输出结合使用时,.raw 字段从何而来?
Where do .raw fields come from when using Logstash with Elasticsearch output?
当同时使用 Logstash 和 Elasticsearch 时,带有 .raw
的字段会附加到分析的字段中,因此当使用 Kibana 等工具查询 Elasticsearch 时,可以按原样使用字段的值而无需按词拆分还有什么不是。
我使用所有最新版本构建了 ELK 堆栈的新安装,并注意到我的 .raw
字段不再像在堆栈的旧版本上那样被创建。有很多 folks posting solutions of creating templates on Elasticsearch,但我没能找到很多关于 为什么 这可以解决问题的信息。为了更好地理解更广泛的问题,我提出了这个具体问题:
.raw 字段来自哪里?
我曾假设 Logstash 在插入文档时使用分析后的字符串和原始字符串填充 Elasticsearch,但考虑到修复存在于 Elasticsearch 模板中这一事实,我怀疑我的假设是否正确。
您假设 .raw
字段是 Logstash 创建的默认索引模板中包含的字符串字段动态模板的结果是正确的 IF manage_template: true
(它是由默认)。
可以看到 Logstash 创建的默认模板(从 2.1 开始)here。正如您在第 26 行看到的,所有字符串字段(message
除外)都创建了 not_analyzed
.raw
子字段。
但是,模板在最新的 Logstash 版本中没有改变,如 template.json
change history 中所示,所以要么是您的安装有其他问题,要么是您更改了 Logstash 配置以使用您自己的索引模板(没有 .raw
字段)。
如果您 运行 curl -XGET localhost:9200/_template/logstash*
您应该会看到 Logstash 创建的模板。
当同时使用 Logstash 和 Elasticsearch 时,带有 .raw
的字段会附加到分析的字段中,因此当使用 Kibana 等工具查询 Elasticsearch 时,可以按原样使用字段的值而无需按词拆分还有什么不是。
我使用所有最新版本构建了 ELK 堆栈的新安装,并注意到我的 .raw
字段不再像在堆栈的旧版本上那样被创建。有很多 folks posting solutions of creating templates on Elasticsearch,但我没能找到很多关于 为什么 这可以解决问题的信息。为了更好地理解更广泛的问题,我提出了这个具体问题:
.raw 字段来自哪里?
我曾假设 Logstash 在插入文档时使用分析后的字符串和原始字符串填充 Elasticsearch,但考虑到修复存在于 Elasticsearch 模板中这一事实,我怀疑我的假设是否正确。
您假设 .raw
字段是 Logstash 创建的默认索引模板中包含的字符串字段动态模板的结果是正确的 IF manage_template: true
(它是由默认)。
可以看到 Logstash 创建的默认模板(从 2.1 开始)here。正如您在第 26 行看到的,所有字符串字段(message
除外)都创建了 not_analyzed
.raw
子字段。
但是,模板在最新的 Logstash 版本中没有改变,如 template.json
change history 中所示,所以要么是您的安装有其他问题,要么是您更改了 Logstash 配置以使用您自己的索引模板(没有 .raw
字段)。
如果您 运行 curl -XGET localhost:9200/_template/logstash*
您应该会看到 Logstash 创建的模板。