1

以下查询针对 metricbeat 运行。我试图了解查询返回的确切内容。

GET metricbeat-*/_search 
{ 
  "query": { 
    "bool": { 
      "filter": [ 
        { 
          "range": { 
            "@timestamp": { 
              "gte": "now-5m" 
            } 
          } 
        }, 
        { 
          "bool": { 
            "should": [ 
              { 
                "match_phrase": { 
                  "host.name": "noether" 
                } 
              }, 
              { 
                "match_phrase": { 
                  "event.dataset": "system.cpu" 
                } 
              } 
            ] 
          } 
        } 
      ] 
    } 
  } 
}

这个查询是否等同于这个?

select * from table where range > now-5m and (host.name = 'noether' OR event.dataset = 'system.cpu')

4

1 回答 1

2

是的,您的假设是正确的,除了它实际上是range >= now-5m因为您在范围过滤器中使用了 gt e运算符。

您可以通过对 host.name 和 event.dataset 的关键字字段使用匹配查询来避免使用 match_phrase 查询

于 2019-09-04T14:08:22.893 回答