2个过滤器DSL查询看起来相同,以及如何组合

时间:2019-06-04 07:59:39

标签: kibana querydsl

在Kibana中,我创建了2个过滤器: raw.browserJs.isWebDriver为true,而raw.browserJs.isWebDriver为true。为什么两个的编辑查询DSL都相同:

{
  "query": {
    "match": {
      "raw.browserJs.isWebDriver": {
        "query": true,
        "type": "phrase"
      }
    }
  }
}

另外,我如何添加条件以进行一个大型DSL查询:

{
  "query": {
    "match": {
      "appName": {
        "query": "temp",
        "type": "phrase"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

在Kibana中显示的查询DSL不是发送给elasticsearch的实际查询。添加了所选时间段的范围过滤器,并对过滤器求反。您可以在浏览器中发送的基础请求中看到实际查询。

您过滤掉raw.browserJs.isWebDriver不正确的地方,结果将是这样:

{
  "query": {
    "bool": {
      "must_not": [
        {
          "match_phrase": {
            "raw.browserJs.isWebDriver": true
          }
        }
      ]
    }
  }
}

您可以在一个DSL查询和bool查询中组合多个条件。(https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html

以下查询将在您的示例中起作用:

{
  "query": {
    "bool": {
      "must": [
        {
          "match_phrase": {
            "raw.browserJs.isWebDriver": true
          }
        },
        {
          "match_phrase": {
            "appName": "temp"
          }
        }
      ]
    }
  }
}