基本上我正在尝试获取
record_created_at
日期,其中当天是星期一
我在
script
中写过下面的
query
查询:
{
"_source": "false",
"query": {
"bool": {
"must": [
{
"script": {
"script": "doc['record_created_at'].value.getDayOfWeek() == 1"
}
}
]
}
},
"aggs": {
"record_created_at_agg": {
"date_histogram": {
"field": "record_created_at",
"calendar_interval": "day",
"format": "yyyy-MM-dd"
}
}
},
"fields": [
"record_created_at"
],
"size": 10000
}
但是我在
query
中没有应用过滤器就得到了响应,如下所示:
回复:
...
"aggregations": {
"record_created_at_agg": {
"buckets": [
{
"key_as_string": "2023-05-08",
"key": 1683504000000,
"doc_count": 4
},
{
"key_as_string": "2023-05-09",
"key": 1683590400000,
"doc_count": 0
},
{
"key_as_string": "2023-05-10",
"key": 1683676800000,
"doc_count": 0
},
...
我还尝试了
query
中的另一个过滤器 match
{
"_source": "false",
"query": {
"bool": {
"must": [
{
"match": {
"record_created_at": "2023-05-08T16:14:58.000Z"
}
}
]
}
},
"aggs": {
"filtered_dates": {
"date_histogram": {
"field": "record_created_at",
"calendar_interval": "day",
"format": "yyyy-MM-dd"
}
}
},
"fields": [
"record_created_at"
],
"size": 10000
}
得到预期的响应,如下
回复2
"aggregations": {
"record_created_at_agg": {
"buckets": [
{
"key_as_string": "2023-05-08",
"key": 1683504000000,
"doc_count": 1
}
]
}
}
}
我做错了什么吗?
第一个回复在技术上是正确的,因为您在 5 月 9 日(星期二)和 10 日(星期三)收到 0 个文档。
您可以做的是将
min_doc_count
添加到您的 date_histogram
聚合中,以便仅获得星期一存储桶
{
"_source": "false",
"query": {
"bool": {
"must": [
{
"script": {
"script": "doc['record_created_at'].value.getDayOfWeek() == 1"
}
}
]
}
},
"aggs": {
"record_created_at_agg": {
"date_histogram": {
"field": "record_created_at",
"calendar_interval": "day",
"format": "yyyy-MM-dd",
"min_doc_count": 1 <------ add this
}
}
},
"fields": [
"record_created_at"
],
"size": 10000
}