我如何在Kibana DevTools中组合多个查询以为每个查询得到一个结果?

问题描述 投票:1回答:1

我正在尝试在Kibana DevTools中编写一个查询,该查询将为我每个查询提供一个匹配项。假设我有要与特定值匹配的字段(field1,field2)。

如果要为这些字段中的任何一个找到任何日志,我想为每个字段显示1个结果。我现在正在使用的显示1搜索1日志的代码如下:

(我正在寻找在最近30分钟内创建的日志,并使用sort来获取最后一个日志)

GET default*/_search
{
  "size": 1,
  "query": {
    "bool": {
      "must": [
        {
      "query_string": {
        "query": "field1:somevalue*"}
    },
    {
      "range":{"@timestamp":{"gte": "now-30m"}}
    }
  ]
}
  },
  "sort" :{
        "@timestamp":{
          "order":"desc"
        }
      }
}

如何修改它以为每个字段(field1,field2)显示1个日志。应该看起来像这样:

GET default*/_search
{
  "size": 1,
  "query": {
    "bool": {
      "must": [
        {
      "query_string": {
        "query": "field1:somevalue*"}
    },
    {
      "range":{"@timestamp":{"gte": "now-30m"}}
    }
  ]
}
  },
  "sort" :{
        "@timestamp":{
          "order":"desc"
        }
      }
}
AND 
{
  "size": 1,
  "query": {
    "bool": {
      "must": [
        {
      "query_string": {
        "query": "field2:somevalue*"}
    },
    {
      "range":{"@timestamp":{"gte": "now-30m"}}
    }
  ]
}
  },
  "sort" :{
        "@timestamp":{
          "order":"desc"
        }
      }
}

上面的那个显然不起作用,但想形象化我的意思。感谢任何帮助

elasticsearch dsl combine
1个回答
0
投票

我建议使用multi search API

GET default*/_msearch
{}
{"size":1,"query":{"bool":{"must":[{"query_string":{"query":"field1:somevalue*"}},{"range":{"@timestamp":{"gte":"now-30m"}}}]}},"sort":{"@timestamp":{"order":"desc"}}}
{}
{"size":1,"query":{"bool":{"must":[{"query_string":{"query":"field2:somevalue*"}},{"range":{"@timestamp":{"gte":"now-30m"}}}]}},"sort":{"@timestamp":{"order":"desc"}}}

在响应中,您将得到您所期望的,即每个查询的响应。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.