为什么我的查询包含从日期到日期的过滤器,但是当使用日期直方图聚合时,开始时间间隔从日期到日期范围(有时)。
我的查询从2015-01-01
过滤到2015-01-31
,间隔开始日期必须在2015-01-01
到2015-01-31
的范围内,但是开始日期我的结果是2014-12-31
。如何在2015-01-01
到2015-01-31
范围内定义开始日期。
我的完整查询:
{
"size": 0,
"aggs": {
"cluster": {
"terms": {
"field": "cluster"
},
"aggs": {
"histogram_Log": {
"date_histogram": {
"field": "actionTime",
"interval": "1800m",
"format": "dd/MM/YYYY hh:mm:ss"
},
"aggs": {
"typelog": {
"terms": {
"field": "typeLog"
}
}
}
}
}
}
},
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"bool": {
"must": [
{
"match_all": {}
},
{
"range": {
"actionTime": {
"lte": "2015-01-31T00:00:00.000",
"gte": "2015-01-01T00:00:00.000"
}
}
}
]
}
}
]
}
}
}
}
}
答案 0 :(得分:1)
请使用以下格式代替HH
。您使用的是hh
12小时而不是24小时制。
"format": "dd/MM/YYYY HH:mm:ss"
<强>更新强>
考虑到1800m
的间隔,您还需要指定此偏移量
"offset": "1d"
答案 1 :(得分:0)
您在结果中突出显示的时间戳不是文档的时间戳,而是第一个存储桶的开头。
您的第一个桶从2014年12月31日00:00:00到01/01/2015 06:00:00。
您已将查询过滤为仅返回时间戳晚于01/01/2015 00:00:00的文档,但由于那是在01/01/2015 06:00:00之前,您的文档属于您的第一桶。
如果您还要强制您的存储桶在01/01/2015 00:00:00开始,那么您需要在直方图聚合中将其指定为 Highcharts.setOptions({
global: {
useUTC: false
}
});
。
答案 2 :(得分:0)
谢谢你的问题Code.I解决它。我从你的模板代码中删除一些代码。所以我做了这个代码的工作。这是非常简单的模板&#34; date_histogram =&gt;日期范围&#34;没关系
var queryOptions =
{
"aggs": {
"all_hours": {
"date_histogram": {
"field": "stamp",
"interval": "1d",
"format": "dd/MM/YYYY"
}
}
},
"query": {
"filtered": {
"filter": {
"bool": {
"must": [
{
"bool": {
"must": [
{
"match_all": {}
},
{
"range": {
"stamp": {
"lte": "2016-10-20",
"gte": "2016-05-01"
}
}
}
]
}
}
]
}
}
}
}
}
`