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

回到顶部