高峰只对攀登它而不是仰望它的人来说才有真正意义。

es按照时间粒度聚合查询数据结果比实际数据多

Elasticsearch | 作者 Timor | 发布于2019年10月11日 | 阅读数:1771

聚合查询语句
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "ccollectionagencies": [
              "370697000000"
            ]
          }
        },
        {
          "range": {
            "dcollectiondate": {
              "gt": "2019-10-09 15:00:00",
              "lt": "2019-10-09 16:00:00"
            }
          }
        }
      ]
    }
  },
  "size": 0,
  "aggs": {
    "group_by_grabTime": {
      "date_histogram": {
        "field": "dcollectiondate",
        "interval": "5m",
        "format": "yyyy-MM-dd HH:mm:ss",
        "min_doc_count": "0"
      }
    }
  }
}
 
聚合结果
{
"took": 17,
"timed_out": false,
"_shards": {
"total": 20,
"successful": 20,
"failed": 0
},
"hits": {
"total": 114738,
"max_score": 0,
"hits": [ ]
},
"aggregations": {
"group_by_grabTime": {
"buckets": [
{
"key_as_string": "2019-10-09 15:00:00",
"key": 1570633200000,
"doc_count": 8971
}
,
{
"key_as_string": "2019-10-09 15:05:00",
"key": 1570633500000,
"doc_count": 9332
}
,
{
"key_as_string": "2019-10-09 15:10:00",
"key": 1570633800000,
"doc_count": 9123
}
,
{
"key_as_string": "2019-10-09 15:15:00",
"key": 1570634100000,
"doc_count": 8960
}
,
{
"key_as_string": "2019-10-09 15:20:00",
"key": 1570634400000,
"doc_count": 9105
}
,
{
"key_as_string": "2019-10-09 15:25:00",
"key": 1570634700000,
"doc_count": 9546
}
,
{
"key_as_string": "2019-10-09 15:30:00",
"key": 1570635000000,
"doc_count": 9624
}
,
{
"key_as_string": "2019-10-09 15:35:00",
"key": 1570635300000,
"doc_count": 9986
}
,
{
"key_as_string": "2019-10-09 15:40:00",
"key": 1570635600000,
"doc_count": 9736
}
,
{
"key_as_string": "2019-10-09 15:45:00",
"key": 1570635900000,
"doc_count": 10040
}
,
{
"key_as_string": "2019-10-09 15:50:00",
"key": 1570636200000,
"doc_count": 9976
}
,
{
"key_as_string": "2019-10-09 15:55:00",
"key": 1570636500000,
"doc_count": 10339
}
]
}
}
}
 
查询其中5分钟时间粒度数据
{
  "query": {
    "bool": {
      "must": [
        {
          "terms": {
            "ccollectionagencies": [
              "370697000000"
            ]
          }
        },
        {
          "range": {
            "dcollectiondate": {
              "gt": "2019-10-09 15:10:00",
              "lt": "2019-10-09 15:15:00"
            }
          }
        }
      ]
    }
  },
  "size": 0,
  "aggs": {
    "group_by_grabTime": {
      "date_histogram": {
        "field": "dcollectiondate",
        "interval": "5m",
        "format": "yyyy-MM-dd HH:mm:ss",
        "min_doc_count": "0"
      }
    }
  }
}
结果
{
"took": 7,
"timed_out": false,
"_shards": {
"total": 20,
"successful": 20,
"failed": 0
},
"hits": {
"total": 9093,
"max_score": 0,
"hits": [ ]
},
"aggregations": {
"group_by_grabTime": {
"buckets": [
{
"key_as_string": "2019-10-09 15:10:00",
"key": 1570633800000,
"doc_count": 9093
}
]
}
}
}
 
发现第一次查询的结果比第二次查询结果多原因出在哪里
已邀请:

trycatchfinal

赞同来自: Timor

把第二个查询的gt,改成gte试试

Timor

赞同来自:

谢谢楼上的帮助 确实是这个问题  gt lt是大于小于 gte lte是大于等于 小于等于  这里的需求明显是要获取大于等于和小于等于的数据

要回复问题请先登录注册