我必须创建聚合,计算包含日期范围的文档数。 我的查询如下:
{
"query":{
"range":{
"doc.createdTime":{
"gte":1483228800000,
"lte":1485907199999
}
}
},
"size":0,
"aggs":{
"by_day":{
"histogram":{
"field":"doc.createdTime",
"interval":"604800000ms",
"format":"yyyy-MM-dd'T'HH:mm:ssZZ",
"min_doc_count":0,
"extended_bounds":{
"min":1483228800000,
"max":1485907199999
}
}
}
}
}
时间间隔:604800000等于7天。
结果,我重温了这些:
"aggregations": {
"by_day": {
"buckets": [
{
"key_as_string": "2016-12-29T00:00:00+00:00",
"key": 1482969600000,
"doc_count": 0
},
{
"key_as_string": "2017-01-05T00:00:00+00:00",
"key": 1483574400000,
"doc_count": 603
},
{
"key_as_string": "2017-01-12T00:00:00+00:00",
"key": 1484179200000,
"doc_count": 3414
},
{
"key_as_string": "2017-01-19T00:00:00+00:00",
"key": 1484784000000,
"doc_count": 71551
},
{
"key_as_string": "2017-01-26T00:00:00+00:00",
"key": 1485388800000,
"doc_count": 105652
}
]
}
}
您可以指示我的水桶从 2016年12月29日开始,但作为范围查询不包括此日期。我希望我的桶应该从 01/01/2017 开始,正如我在范围查询中指出的那样。此问题仅发生在查询中,间隔的天数大于1.如果有任何其他间隔,则可以正常工作。我已经尝试了一天,几个月和几个小时,它运行正常。 我也试过使用过滤的aggs,然后才使用date_histogram。结果是一样的。 我使用的是Elasticsearch 2.2.0版本。
问题是如何强制date_histogram从我需要的日期开始?
答案 0 :(得分:3)
尝试使用从给定公式计算的值添加偏移参数:
value = start_date_in_ms%week_in_ms = 1483228800000%604800000 = 259200000
...
val sparkConf = new SparkConf().setAppName("spark-job")
.set("spark.default.parallelism", (CPU * 3).toString)
.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
.registerKryoClasses(Array(classOf[Member], classOf[GraphVertex], classOf[GraphEdge]))
.set("spark.dynamicAllocation.enabled", "true")
implicit val sparkSession = SparkSession.builder().config(sparkConf).getOrCreate()
sparkSession.sparkContext.setCheckpointDir("s3://spark-jobs/checkpoint")
....