添加where子句来聚合查询

时间:2017-04-29 10:05:16

标签: elasticsearch kibana

这是kibana生成的查询,它按预期工作。但是我想在查询中添加一个where子句。 eventname不应以" Describe"开头。或"列出"。

{
  "size": 0,
  "query": {
    "bool": {
      "must": [
        {
          "query_string": {
            "query": "*",
            "analyze_wildcard": true
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": 1490867646696,
              "lte": 1493459646696,
              "format": "epoch_millis"
            }
          }
        }
      ],
      "must_not": []
    }
  },
  "_source": {
    "excludes": []
  },
  "aggs": {
    "2": {
      "terms": {
        "field": "eventName.keyword",
        "size": 5000,
        "order": {
          "_count": "desc"
        }
      }
    }
  }
}

更新: 我不确定这是否会正确排除记录。

      "must_not": [     
{ 
    "prefix" : { "eventName.keyword" : "Describe" }
},
{ 
    "prefix" : { "eventName.keyword" : "List" }
}
]

如何将此查询恢复为kibana?

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式获得预期结果:

方法-1:自定义现有的query_string查询

使用以下查询字符串从Kibana搜索栏替换默认query_string查询*

!(eventName.keyword: Describe* OR eventName.keyword: List*)

方法-2:在Kibana中添加过滤器

  1. 按照here
  2. 所述在Kibana中添加过滤器
  3. 然后edit the filter并使用以下代码替换整个过滤器:
  4. `

    {
      "query": {
        "bool": {
          "must_not": [
            {
              "prefix": {
                "eventName.keyword": "Describe"
              }
            },
            {
              "prefix": {
                "eventName.keyword": "List"
              }
            }
          ]
        }
      }
    }
    

    `