我有物品出租。用户指定 astart_date
和end_date
。每个项目也有多个blocked_periods
开始和结束日期。
目标:
查询所有可用项目。比方说:12.11.、13.11.、14.11.、15.11.
阻止的是 13. 和 14.
该项目应在 12. 或 15. 或从 12. 到 15. 可用,但开始和结束日期不能在 13. 和 14.
当前指数:
{
"development_items" : {
"aliases" : { },
"mappings" : {
"item" : {
"properties" : {
"blocked_periods" : {
"type" : "nested",
"properties" : {
"end_date" : {
"type" : "date",
"format" : "yyyy-MM-dd"
},
"start_date" : {
"type" : "date",
"format" : "yyyy-MM-dd"
}
}
}
}
}
},
"settings" : {
"index" : {
"creation_date" : "1503327829680",
"number_of_shards" : "5",
"number_of_replicas" : "1",
"uuid" : "9b9BhF-ITta2dlCKRLrnfA",
"version" : {
"created" : "2040499"
}
}
},
"warmers" : { }
}
}
当前查询:
{
bool: {
must_not: {
nested: {
path: 'blocked_periods',
query: {
bool: {
should: [
{
bool: {
must: [
{
range: {
'blocked_periods.start_date': {
lte: start_date
}
}
},
{
range: {
'blocked_periods.end_date': {
gte: end_date
}
}
}
]
}
}
]
}
}
}
}
}
}