我在弹性搜索中存储类似以下信息:
{ "timeslot_start_at" : "2013-02-01", "timeslot_end_at" : "2013-02-03" }
Run Code Online (Sandbox Code Playgroud)
鉴于我有另一个日期范围(例如从用户输入给出),我想要搜索相交的时间范围.与此类似:确定两个日期范围重叠是否概述了以下逻辑是我所追求的:
(StartDate1 <= EndDate2) and (StartDate2 <= EndDate1)
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将其纳入弹性搜索查询,我是否会使用范围过滤器并仅设置"到"值,将空白留空?或者有更有效的方法吗?
imo*_*tov 16
更新:现在可以使用在elasticsearch v5.2中添加的date_range数据类型.对于早期版本的elasticsearch,以下解决方案仍然适用.
要测试交集,您应该使用bool查询将两个范围查询组合到单个查询中:
{
"bool": {
"must": [
{
"range": {
"timeslot_start_at": {
"lte": "2013-02-28"
}
}
},
{
"range": {
"timeslot_end_at": {
"gte": "2013-02-03"
}
}
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4193 次 |
| 最近记录: |