我正在使用ELK从我的日志文件创建仪表板。我有一个包含id值和“success” / “failure”值的条目的日志文件,显示给定id的操作是否成功或失败。每个操作/ id可以无限次失败,并且最多成功一次。在我的Kibana仪表板中,我想显示具有“failure”值的每个操作id的日志条目计数,但我想过滤掉该id存在“success”日志条目的情况。也就是说,我只对从未成功的操作感兴趣。有什么技巧可以实现这个需求吗?
我正在使用ELK从我的日志文件创建仪表板。我有一个包含id值和“success” / “failure”值的条目的日志文件,显示给定id的操作是否成功或失败。每个操作/ id可以无限次失败,并且最多成功一次。在我的Kibana仪表板中,我想显示具有“failure”值的每个操作id的日志条目计数,但我想过滤掉该id存在“success”日志条目的情况。也就是说,我只对从未成功的操作感兴趣。有什么技巧可以实现这个需求吗?
在Kibana 5的搜索栏中很容易实现。只需添加一个过滤器
!(_exists_:"your_variable")
你可以切换筛选器或编写反向查询
_exists_:"your_variable"
在Kibana 4和Kibana 3中,您可以使用现在已被弃用的查询。_missing_:"your_variable"
注意: 在 Elasticsearch 7.x 版本中,Kibana现在在搜索栏中提供下拉菜单以选择KQL或Lucene风格的查询。请注意,诸如 _exists_:FIELD
的语法是 Lucene 语法,您需要相应地设置下拉菜单。
field:*
来检查字段是否存在,使用not field:*
来检查它是否丢失。! (_exists_:NAME)
这个语句对我无效。我参照了以下建议:
https://discuss.elastic.co/t/kibana-5-0-0--missing--is-not-working-anymore/64336
NOT _exists_:NAME
更新 我面临的问题是,ES语法禁止在否定操作符后面使用空格。请使用以下其中一种:
NOT _exists_:FIELD
!_exists_:FIELD
-_exists_:FIELD
查看教程:https://www.timroes.de/2016/05/29/elasticsearch-kibana-queries-in-depth-tutorial/
注意:在 Elasticsearch 7.x 中,Kibana 现在有一个下拉菜单可以选择 KQL 或 Lucene 风格的查询语句。请注意,如 _exists_:FIELD
这样的语法是 Lucene 语法,您需要相应地设置下拉菜单。
在新版本的Kibana中,默认语言现在是KQL(Kibana查询语言),不再是Lucene。因此,这里大多数答案都已过时。查询字段是否存在的查询语句如下:
your_variable:*
not your_variable:*
一个选项是在Kibana中为此条件创建自己的查询。然后只需让计数面板使用此查询即可。
value:failure
_missing_
。!(_exists_:"field")
可以正常工作。 - mindex(!_exists_:"your_variable")
放在括号中。 - ricka