ELK中fieldname和fieldname.raw之间的区别?

时间:2015-07-15 20:06:26

标签: logstash kibana elasticsearch kibana-4

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

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

的此类信息

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

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

1 个答案:

答案 0 :(得分:7)

elasticsearch中的每个字段都有一个映射,用于描述类型以及如何分析索引。

默认情况下,字段是字符串并进行分析(删除标点符号,分隔为标记的单词等)。例如,一个名为" path"的字段。用:

/var/log/messages

会变成

["var", "log", "messages"]

表示您无法再搜索原始字符串,标点符号中的任何含义都已丢失。

这是将文本引擎用于日志数据的副作用。

由于每个logstash用户几乎立即就会遇到这种情况,因此logstash团队创建了一个模板,该模板将为任何名为" logstash - *"的索引配置映射。

此模板定义了一个名为" raw"的多字段,设置为" not_analyzed"。因此,您最终会在索引中找到两个项目:

path: ["var", "log", "messages"]
path.raw: "/var/log/messages"

非常有用,特别是对于那些先前提及的首次使用者。你可以使用" path.raw"在kibana或其他疑问。

编辑:关于kibana的快速说明:如果您使用分析字段,它将为每个标记创建一个项目,因此您最终会得到一个带有切片的饼图,用于" var" ," log"和"消息"。

一旦您对映射和模板越来越熟悉,您可能会考虑不对基本字段进行分析,从而无需使用" .raw"共。这也允许你使用doc_values,这是另一个有趣的话题。

祝你好运!