【问题标题】:Save shop timing in elasticsearch在 elasticsearch 中保存商店时间
【发布时间】:2017-03-20 16:49:24
【问题描述】:

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

星期一:早上 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:00 进行搜索,则状态为 CLOSED
如何找到商店状态的任何最佳方法都会对我有所帮助。

【问题讨论】:

    标签: search elasticsearch


    【解决方案1】:

    你可以像这样设计你的架构:

    {
      "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 am 转换为一天中的分钟,即 430 查询类似

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

    使用inner_hits 找出符合您条件的嵌套文档

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-07
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多