2017-03-20 73 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

希望它有幫助