我有一种情况可以在弹性搜索中保存商店时间。例如,有一个商店有这样的时间
星期一:上午7点至下午2点,下午4点至晚上8点 星期二:上午7点至下午2点,下午4点至晚上8点 星期三:上午7点至下午2点,下午4点至晚上8点 星期四:上午7点至下午2点,下午4点至晚上8点 星期五:上午7点至下午2点,下午4点至晚上8点 星期六:上午7点至下午2点,下午4点至晚上8点 星期天:关闭
我必须保存这个时间并执行搜索,例如哪个商店开放或哪个商店关闭。
例如,如果用户在星期一上午7:04进行搜索,则商店的状态为 OPEN ,如果用户在下午2:10进行搜索,则商店的状态为 BREAK 如果用户在晚上9点搜索,则状态为已关闭。
任何最好的方法如何找到商店的状态将有助于我。
答案 0 :(得分:0)
您可以设计您的架构,如:
{
"day":"Monday"
"slots" : [
{
"startTime":420, //7*60 // MINUTE_OF_DAY (7am)
"endTime":840,//12 + 2 * 60 //(2 pm)
"type":"OPEN"
},
{
"startTime":960, //16*60
"endTime":1200,//20 * 60
"type":"OPEN"
},
{
"startTime":840, //14*60
"endTime":960,//16 * 60
"type":"BREAK"
},
{
"startTime":1200, //20*60
"endTime":1440, //24*60
"type":"CLOSED"
},
{
"startTime":0
"endTime":420,
"type":"CLOSED"
},
]
}
注意:广告位的类型为" nested"
现在,当您收到day = Monday和time = 7:10 am的查询时,请将上午7:10转换为分钟,即430 进行类似
的查询where day=Monday AND slots.startTime < 430 AND slots.endTime>430
使用inner_hits找出符合条件的嵌套文档
希望,这有帮助