ELK中fieldname和fieldname.raw的区别?
Difference between fieldname and fieldname.raw in ELK?
我已经尝试使用 ELK stack 一段时间了,现在我正在关注网络上的一些资源。但是我没有找到任何重要的资源来清楚地解释 fieldname
和 fieldname.raw
之间的区别,例如名称为 fieldname
的字段。
在这种情况下没有什么可尝试的,但我确实尝试搜索了这个但没有成功。我对此唯一的主要理解是 Kibana window 表格(遗憾的是我不知道如何重现),它说:fieldname
是一个分析字段。没有关于 fieldname.raw
的此类信息
我注意到的另一件事是,当我在 Kibana4 Discover 中使用 fieldname.raw: "value"
时,它显示的结果比我看到的 fieldname: "value"
多一点。我看不出缺少哪些,因为我分别从这些输入中得到了 559 和 554 个结果。
我猜后缀 .raw
说明了它的含义 - 它可能是日志本身的一个字段,没有 Logstash 的任何干预。但我想确定这是否是它的意思。如果是这样,那么我是如何(更重要的是,为什么?)在分析的领域中得到更少的结果? Logstash 是否有任何不正确的地方,或者是某种错误配置?感谢任何指点。
elasticsearch 中的每个字段都有一个映射,描述类型以及如何分析它以建立索引。
默认情况下,字段是字符串并经过分析(删除标点符号,将单词分隔成标记等)。例如,名为 "path" 的字段具有:
/var/log/messages
会变成
["var", "log", "messages"]
这意味着您无法再搜索原始字符串,并且标点符号中的任何含义都已丢失。
这是对 log 数据使用 text 引擎的副作用。
由于每个 logstash 用户几乎立即点击它,logstash 团队创建了一个模板,该模板将为名为 "logstash-*".
的任何索引配置映射
此模板定义了一个名为 "raw" 的多字段,它被设置为 "not_analyzed"。因此,您最终在索引中得到了两项:
path: ["var", "log", "messages"]
path.raw: "/var/log/messages"
非常有用,特别是对于前面提到的那些初次使用的用户。您可以在 kibana 或其他查询中使用 "path.raw"。
编辑:关于 kibana 的快速说明:如果您使用分析字段,它将为每个标记创建一个项目,因此您最终会得到一个饼图,其中包含 "var"、"log", 和 "messages".
一旦您更加熟悉映射和模板,您可能会考虑制作基本字段 not_analyzed,从而完全不需要“.raw”。这也将允许您使用 doc_values,这是另一个有趣的话题。
祝你好运!
我已经尝试使用 ELK stack 一段时间了,现在我正在关注网络上的一些资源。但是我没有找到任何重要的资源来清楚地解释 fieldname
和 fieldname.raw
之间的区别,例如名称为 fieldname
的字段。
在这种情况下没有什么可尝试的,但我确实尝试搜索了这个但没有成功。我对此唯一的主要理解是 Kibana window 表格(遗憾的是我不知道如何重现),它说:fieldname
是一个分析字段。没有关于 fieldname.raw
我注意到的另一件事是,当我在 Kibana4 Discover 中使用 fieldname.raw: "value"
时,它显示的结果比我看到的 fieldname: "value"
多一点。我看不出缺少哪些,因为我分别从这些输入中得到了 559 和 554 个结果。
我猜后缀 .raw
说明了它的含义 - 它可能是日志本身的一个字段,没有 Logstash 的任何干预。但我想确定这是否是它的意思。如果是这样,那么我是如何(更重要的是,为什么?)在分析的领域中得到更少的结果? Logstash 是否有任何不正确的地方,或者是某种错误配置?感谢任何指点。
elasticsearch 中的每个字段都有一个映射,描述类型以及如何分析它以建立索引。
默认情况下,字段是字符串并经过分析(删除标点符号,将单词分隔成标记等)。例如,名为 "path" 的字段具有:
/var/log/messages
会变成
["var", "log", "messages"]
这意味着您无法再搜索原始字符串,并且标点符号中的任何含义都已丢失。
这是对 log 数据使用 text 引擎的副作用。
由于每个 logstash 用户几乎立即点击它,logstash 团队创建了一个模板,该模板将为名为 "logstash-*".
的任何索引配置映射此模板定义了一个名为 "raw" 的多字段,它被设置为 "not_analyzed"。因此,您最终在索引中得到了两项:
path: ["var", "log", "messages"]
path.raw: "/var/log/messages"
非常有用,特别是对于前面提到的那些初次使用的用户。您可以在 kibana 或其他查询中使用 "path.raw"。
编辑:关于 kibana 的快速说明:如果您使用分析字段,它将为每个标记创建一个项目,因此您最终会得到一个饼图,其中包含 "var"、"log", 和 "messages".
一旦您更加熟悉映射和模板,您可能会考虑制作基本字段 not_analyzed,从而完全不需要“.raw”。这也将允许您使用 doc_values,这是另一个有趣的话题。
祝你好运!