2017-03-20 48 views
0

我有一种情况可以在弹性搜索中保存商店时间。例如有一家店有这样
在elasticsearch中保存商店时间

周一的时间:7 am-2pm,4 pm-8pm
周二:7 am-2pm,4 pm-8pm
周三:7 am-2pm, 4 pm-8pm
周四:7 am-2pm,4 pm-8pm
周五:7 am-2pm,4 pm-8pm
周六:7 am-2pm,4 pm-8pm
星期日:关闭

我不得不保存该定时并执行搜索等,其商店是开放或商店关门。

例如如果在上午7:04店内的状态是在周一用户搜索OPEN,如果用户在搜索下午2:10店内的状态是BREAK,如果在下午9:00用户搜索状态为已关闭
任何最好的方法如何找到商店的地位将帮助我。

回答

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”的

现在,当您收到查询天=周一和时间为上午7时10,上午7点10分转换为天,即430 分钟做出这样

where day=Monday AND slots.startTime < 430 AND slots.endTime>430 

使用inner_hits查询找出嵌套文档符合crite ria

希望它有帮助