【发布时间】:2018-01-06 03:39:14
【问题描述】:
所有开发者,这是我在这里的第一个问题,请忽略我的错误。我正在做一个有预订清单的项目。这个列表有开始日期和结束日期,对于 elasticsearch,我已经将它们声明并索引为嵌套
"Bookings":[{
"StartDate":"2017-01-10T10:00:00+11:00",
"EndDate":"2017-01-15T21:30:00+11:00"
},{
"StartDate":"2017-01-20T10:00:00+11:00",
"EndDate":"2017-01-25T00:00:00+11:00"
}]
但是当我尝试检查可用性时,结果并不像预期的那样,这是我正在运行的 elasticsearch 的 json
{
"from": 0,
"size": 12,
"_source": [
"Id",
"Bookings"
],
"query": {
"bool": {
"filter": [
{
"nested": {
"path": "Bookings",
"query": {
"bool": {
"must_not": [
{
"bool": {
"must": [
{"range": {"Bookings.StartDate": {"gte": "2018-01-06T00:00:00+11:00"}}},
{"range": {"Bookings.EndDate": {"lte": "2018-01-09T00:00:00+11:00"}}}
]
}
}
]
}
}
}
}
]
}
}
}
当搜索日期为 06-01-2018 (startDate) 和 09-01-2018(endDate) 时,结果很好,但是当我将日期更改为 06-01-2018 (startDate) 和 11-01-2018(endDate) ) 结果出错了,但根据嵌套逻辑,它应该给我一个从 10-01-2018 到 15-01-2018 的预订,因为 endDate (11-01-2018) 在该范围内。谁能帮我解决检查可用性的逻辑,并且在搜索开始和结束日期范围内没有预订?
【问题讨论】:
-
看起来字段名称的大小写不正确 - 文档中的
"Bookings.startDate"与查询中的"Bookings.StartDate"。结束日期相同。 -
感谢您指出这一点,但是当我编辑要粘贴到此处的代码时,我忘了更改大小写。在实际代码中,两者的拼写相同
-
@Ravian :我面临同样的问题,日期范围在我的对象列表中无法正常工作。你能分享你的字段映射
Bookings。它可以帮助我解决我的问题,无论我的映射是否正确。 -
你能说得更具体些吗?你需要什么信息?我非常乐意帮助您使其正常工作。
标签: elasticsearch nested nest