我正在使用ELK从我的日志文件创建仪表板。我有一个日志文件,其中的条目包含一个id值和一个“success”/“failure”值,显示具有给定id的操作是成功还是失败。每个操作/ id可以无限次地失败并且最多可以成功一次。在我的Kibana仪表板中,我想显示每个操作ID的“失败”值的日志条目计数,但我想过滤掉id存在“成功”日志条目的情况。即我只对从未成功的行动感兴趣。任何可以实现此目的的技巧提示?
答案 0 :(得分:81)
这在Kibana 5搜索栏中很容易。只需添加一个过滤器
!(_exists_:"your_variable")
您可以切换过滤器或将反向查询写为
_exists_:"your_variable"
在Kibana 4和Kibana 3中,您可以使用现已弃用的此查询
_missing_:"your_variable"
答案 1 :(得分:2)
! (_exists_:NAME)
对我不起作用。我使用的建议来自:
https://discuss.elastic.co/t/kibana-5-0-0--missing--is-not-working-anymore/64336
NOT _exists_:NAME
UPDATE 我遇到的问题是ES语法禁止在否定运算符之后的空格。使用以下之一:
NOT _exists_:FIELD
!_exists_:FIELD
-_exists_:FIELD
查看教程:https://www.timroes.de/2016/05/29/elasticsearch-kibana-queries-in-depth-tutorial/
答案 2 :(得分:2)
在较新的ELK版本中(我认为在Elasticsearch 6之后),您应该使用field:*
检查字段是否存在,并使用not field:*
检查字段是否丢失。
答案 3 :(得分:-2)
一种选择是在Kibana中为此条件创建自己的查询。然后让你的面板进行计数只是为了使用这个查询。
value:failure