查询返回的结果很小,这不是我在ElasticSearch中的意图

gev0vcfq  于 2023-02-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(128)

我正在使用rest API查询ElasticSearch的结果。
下面是API查询字符串。

GET /..../_search
{
"size":0,
  "query": { 
    "bool": {
      "must": [
        { "range": {
          "@timestamp": {
             "time_zone": "+09:00",        
              "gte": "2023-01-24T00:00:00.000Z", 
              "lt": "2023-01-24T03:03:00.000Z" } } },
          {
                      "term" : {
                        "serviceid.keyword" : {
                          "value" : "430011397"
                        }
                      }
                    }
        ]
    }
  },
  "aggs": {
    "by_day": {
      "auto_date_histogram": {
        "field":     "@timestamp",
        "minimum_interval":"minute"
      },
          "aggs": {
            "agg-type": {
              "terms": {
                "field": "nxlogtype.keyword",
                "size": 100000
              },
              "aggs": {
                      "my-sub-agg-name": {
                        "avg": {
                          "field": "size"
                        }
                      }
                }
              }
        }
      }
    }
  }

如您所见,我在gtelt字段中指定了大约三个小时的时间范围。但是,结果只返回了6个间隔为30分钟的桶。我希望在我指定的时间戳内返回许多间隔为一分钟的桶,但是结果总是相同的,即使我将时间范围更改为更长的时间范围。
由于我是ElasticSearch的新手,我不熟悉查询的用法。如何解决我的问题?

jum4pzuy

jum4pzuy1#

您可以使用date histogram聚合而不是auto_date_histogram来指定严格范围。
下面是一个例子:

"aggs": {
  "by_day": {
    "date_histogram": {
      "field": "@timestamp",
      "calendar_interval":"minute"
    },
    ...

相关问题