【问题标题】:Grafana / ElasticSearch query: field equal to value OR field not existsGrafana / ElasticSearch查询:字段等于值或字段不存在
【发布时间】:2019-03-06 17:58:33
【问题描述】:

我向Grafana 添加了一个新字段,并希望有以下Lucene 查询,当它丢失时将忽略该字段:

!_exists_:field OR (_exists_:field AND field:value)

但是,即使是简单的存在 OR 不存在 Lucene 查询似乎也不起作用,而 ElasticSearch 确实支持它:!_exists_:field1 OR _exists_:field2 https://discuss.elastic.co/t/how-to-do-where-field1-exists-or-field2-does-not-exist/95626

有没有办法通过Lucene 查询来做到这一点?带有 AND 的变体可以正常工作:https://stackoverflow.com/a/50997638/10441689

我想将它用于一个新的模板变量,该变量可能会丢失。我正在运行Grafana 5.2 / ElasticSearch 5.6

【问题讨论】:

    标签: elasticsearch lucene grafana


    【解决方案1】:

    不确定我是否正确理解了您的问题,但是..

    OR 的 lsv 使 rsv 变得多余..

    你试过了吗

    !field.yourFieldValue:* <-- that will NOT all of them.
    
    !field.yourFieldValue:value <-- that will NOT all with a specific value.
    

    我都试过了,它们都有效。

    如果您使用 Kibana,那么当您不确定查询时,最好先使用 Kibana Discover,然后将查询复制/粘贴到 Grafana 中。 Kibana 将对日志提供更好的概览(也许您会更好地了解查询不起作用的原因),然后将其粘贴到 Grafana 中,这将只提供视觉概览。

    this link 将为如何进行 lucene 查询提供一个很好的指导。

    【讨论】:

    • 感谢您的回答。我会尝试更好地解释我的问题。确实,这两个查询都是单独工作的,但我想在 1 个图中显示两个结果(以时间为 x 轴)。所以添加新字段后,我需要添加之前的原始值(=字段不存在),添加新字段后,我希望该字段等于值。否则我将无法为此字段创建模板变量/过滤器。你知道这在 1 个 Lucene 查询中是否可行吗?
    【解决方案2】:

    在条款周围加上括号对我有用:

    (!_exists_:field) OR (field:value)
    

    见:Cannot use "OR" with "NOT _exists_" in Kibana 6.8.0 search bar

    【讨论】:

      猜你喜欢
      • 2022-01-09
      • 2015-12-05
      • 2019-10-28
      • 2022-08-05
      • 2020-10-31
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多