【问题标题】:Kibana query exact match of entire valueKibana查询整个值的完全匹配
【发布时间】:2017-09-08 19:40:50
【问题描述】:

我有一系列记录,其中的字段 App Version 目前有两个可能的值:2.3.02.3.0 SP1。如果我尝试像这样在开发控制台中查询 2.3.0...

GET myindex/_search
{
  "query": {
    "match": {
      "App Version": "2.3.0"
      }
  }
}

它返回所有记录,包括2.3.0 SP1 2.3.0 的记录。由于我的最终目标是删除仅包含App Version=2.3.0 的所有记录,因此我需要一些方法来过滤掉包含SP1 的记录。我在任何地方都找不到强制完全匹配整个字符串的文档,而不仅仅是字符串的一部分。有什么想法吗?

编辑:如果有帮助,我正在运行 Kibana 5.2.2。

【问题讨论】:

    标签: elasticsearch kibana elastic-stack kibana-5


    【解决方案1】:

    对于完全匹配,您应该在非分析字段 (ES 2.X) 或关键字字段 (ES 5.X) 上使用术语查询。但我想您将不得不更改映射。

    另外,您可以在 bool query 中组合两个或多个查询:

    {
      "query": {
        "bool": {
           "must": [
              {
                "match": {
                  "App Version": "2.3.0"
                }
              }
           ],
           "must_not": [
              {
                "match": {
                  "App Version": "SP1"
                }
              }
           ]
        }
      }
    }
    

    【讨论】:

    • 请注意,此查询保证只返回具有应用程序版本的记录:2.3.0 而是返回与 2.3.0 匹配且不包含 @ 的所有记录987654326@。即,如果您获得 app_version 的新值,例如 2.3.0 SP2,那么该记录也将被匹配。希望 OP 理解这个警告。
    • 使用"App Version.keyword": "2.3.0" 进行匹配查询正是我所需要的。它只匹配2.3.0 而不是2.3.0SP12.3.0 SP1。不过,对于像我这样的 ELK 新手来说,排除逻辑将非常有用,非常感谢!
    猜你喜欢
    • 2014-11-01
    • 1970-01-01
    • 2021-04-06
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 2022-01-06
    • 2021-06-28
    • 1970-01-01
    相关资源
    最近更新 更多