将 where 子句添加到聚合查询

Adding where clause to aggregate query

这是 kibana 生成的查询,它按预期工作。但我想在查询中再添加一个 where 子句。事件名称不应以 "Describe" 或 "List".

开头
{
  "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 中?

您可以通过以下两种方式达到预期效果:

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

将 Kibana 搜索栏中的默认 query_string 查询 * 替换为以下查询字符串:

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

方法二:在Kibana中添加过滤器

  1. 按照说明在 Kibana 中添加过滤器 here
  2. 然后 edit the filter 并用以下代码替换整个过滤器:

`

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

`