【问题标题】:Difference between fieldname and fieldname.raw in ELK?ELK 中的 fieldname 和 fieldname.raw 的区别?
【发布时间】:2015-10-05 01:27:44
【问题描述】:

我一直在尝试使用 ELK 堆栈一段时间,现在关注网络上的一些资源。但是我没有找到任何重要的资源可以清楚地解释fieldnamefieldname.raw 之间的区别,对于名称为fieldname 的字段。

在这种情况下没有什么可以尝试的,但我确实尝试过搜索但没有运气。我对此的唯一主要理解是形成 Kibana 窗口(遗憾的是,我不知道如何重现)它说:fieldname 是一个分析字段。没有关于fieldname.raw的信息

我注意到的另一件事是,当我在 Kibana4 Discover 中使用 fieldname.raw: "value" 时,它显示的结果比我看到的 fieldname: "value" 多一点。由于我分别从这些输入中获得了 559 和 554 个结果,因此我无法看到哪些结果丢失了。

我猜后缀 .raw 说明了它的含义 - 它可能是日志本身的一个字段,没有 Logstash 的任何干预。但我想确定这是否是它的意思。如果是这样,那么我如何(更重要的是,为什么?)在分析的领域中得到的结果更少? Logstash 有什么地方做得不对还是配置错误?任何指针表示赞赏。

【问题讨论】:

  • 另外,在某些情况下,Discover 搜索查询会在使用 fieldname: "value" 时突出显示匹配的文本,而在我使用 fieldname.raw: "value" 时不会突出显示。

标签: logstash kibana elasticsearch kibana-4


【解决方案1】:

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”和“消息”。

一旦您对映射和模板更加熟悉,您可能会考虑将基本字段设置为 not_analyzed,从而完全消除对“.raw”的需求。这也将允许您使用 doc_values,这是另一个有趣的话题。

祝你好运!

【讨论】:

  • 我有一种直觉,我会从 Alain Collins 那里得到一个非常好的和详细的答案!很好的例子。谢谢! :)
猜你喜欢
  • 1970-01-01
  • 2015-04-23
  • 2019-08-16
  • 2011-10-12
  • 2011-02-17
  • 2016-10-18
  • 2012-07-03
  • 2013-10-25
  • 2011-03-01
相关资源
最近更新 更多