Elasticsearch日期范围交集
我在elasticsearch中存储以下信息:
{ "timeslot_start_at" : "2013-02-01", "timeslot_end_at" : "2013-02-03" }
假设我还有另一个日期范围(例如,从用户输入中得出),我想搜索一个相交的时间范围。与此类似:确定两个日期范围是否重叠这概述了以下逻辑:
(StartDate1 <= EndDate2) and (StartDate2 <= EndDate1)
但是我不确定如何将其放入elasticsearch查询中,我会使用范围过滤器并且仅将“ to”值设置为,而将from留为空白吗?还是有一种更有效的方法?
回答:
更新:现在可以使用在elasticsearch
v5.2中添加的date_range数据类型。对于elasticsearch的早期版本,以下解决方案仍然适用。
要测试交集,您应该使用布尔查询将两个范围查询合并为一个查询:
{ "bool": {
"must": [
{
"range": {
"timeslot_start_at": {
"lte": "2013-02-28"
}
}
},
{
"range": {
"timeslot_end_at": {
"gte": "2013-02-03"
}
}
}
]
}
}
以上是 Elasticsearch日期范围交集 的全部内容, 来源链接: utcz.com/qa/414920.html