2014-02-04 4 views
3

Я создаю систему бронирования отелей с помощью Elasticsearch и пытаюсь найти способ вернуть отели, которые имеют переменное число последовательных дат доступны (например, 7 дней) по диапазону датElasticsearch последовательных даты

I Я в настоящее время храню даты и цены в качестве детского документа в отеле, но я не уверен, как провести поиск, или если это возможно даже при моей текущей настройке?

Редактирование: добавлены отображения

Отель Mapping

{ 
    "hotel":{ 
    "properties":{ 
     "city":{ 
     "type":"string" 
     }, 
     "hotelid":{ 
     "type":"long" 
     }, 
     "lat":{ 
     "type":"double" 
     }, 
     "long":{ 
     "type":"double" 
     }, 
     "name":{ 
     "type":"multi_field", 
     "fields":{ 
      "name":{ 
      "type":"string" 
      }, 
      "name.exact":{ 
      "type":"string", 
      "index":"not_analyzed", 
      "omit_norms":true, 
      "index_options":"docs", 
      "include_in_all":false 
      } 
     } 
     }, 
     "star":{ 
     "type":"double" 
     } 
    } 
    } 
} 

Дата Mapping

{ 
    "dates": { 
     "_parent": { 
      "type": "hotel" 
     }, 
     "_routing": { 
      "required": true 
     }, 
     "properties": { 
      "date": { 
       "type": "date", 
       "format": "dateOptionalTime" 
      }, 
      "price": { 
       "type": "double" 
      } 
     } 
    } 
} 

настоящее время я использую диапазон дат для выбора доступных дат, а затем запрос поле, чтобы соответствовать город - остальные поля будут использованы позднее

+0

Я предлагаю предоставить фактические документы и конкретные примеры того, чего вы хотите достичь. На этот вопрос гораздо легче ответить. – DrTech

+0

Можете ли вы разместить хотя бы один источник документа? –

+0

Я добавил сопоставления для отеля (родителя) и даты (детские) документы - извините за форматирование, я не могу показаться отступом .. – swleighton

ответ

1

Мне пришлось кое-что hing подобный, и я в конечном итоге хранили каждый день, когда отель (номер) был забронирован во время индексации. (Таким образом, список [2014-02-15, 2014-02-16, 2014-02-17 и т. Д.])

После этого было фантастично писать запрос, чтобы найти все номера в отеле, которые были свободны во время определенный диапазон дат.

По-прежнему кажется, что должно быть разумное решение, но это в конечном итоге отлично работает для меня.

+2

Вы можете написать здесь, как вы делали поиск, в частности, как выглядит ваш поисковый запрос? – JVK

0

В моем проекте мы ограничили срок пребывания, поэтому я создал объект в отображении, и указаны доступные даты бронирования для каждого периода, как:

  • список даты бронирования, доступных в течение 2 дней пребывания
  • список даты бронирования, доступной в течение 3 дней пребывания
  • ....
  • списка даты бронирования, доступной в течение 10 дней пребывания
Смежные вопросы