我正在开发一个Elasticsearch
用于存储数据并显示一些复杂统计数据的项目。
我有一个看起来像这样的索引:
Reservation {
id: number
check_in: Date
check_out: Date
created_at: Date
// other fields...
}
我需要计算特定日期范围内我的 s之间的平均天数差异, check_in
并将结果显示为一个数字。 created_at
Reservation
我试过这个query
:
{
"script_fields": {
"avgDates": {
"script": {
"lang": "expression",
"source": "doc['created_at'].value - doc['check_in'].value"
}
}
},
"query": {
"bool": {
"must": [
{
"range": {
"created_at": {
"gte": "{{lastMountTimestamp}}",
"lte": "{{currentTimestamp}}"
}
}
}
]
}
},
"size": 0,
"aggs": {
"avgBetweenDates": {
"avg": {
"field": "avgDates"
}
}
}
}
日期字段以ISO 8601格式保存(例如:2020-03-11T14:25:15+00:00),我不知道这是否会产生问题。
它捕获了一些点击,所以,查询肯定有效!但是,它总是null
作为avgBetweenDates
聚合的值返回。
我需要这样的结果:
"aggregations": {
"avgBetweenDates": {
"value": 3.14159 // Π is just an example!
}
}
任何想法都会有所帮助!
谢谢你。