Фильтрация по минимальной и максимальной цене на основе даты в Elasticsearch - PullRequest
0 голосов
/ 07 января 2020

Я работаю над сайтом бронирования, разработанным в PHP. Цены на товары меняются ежедневно. Я хочу предоставить пользователю дату начала, дату окончания, минимальную цену, максимальную цену. Мой пример использования здесь:

  • Когда пользователь выбирает дату начала, дату окончания, минимальную цену и максимальную цену, я должен иметь возможность показывать товары с точной расчетной средней ценой за день, и эта цена должна соответствовать к минимальным / максимальным ценовым фильтрам.

Я пытаюсь добиться этого с помощью Elasticsearch. Я пробовал несколько способов и получил следующие проблемы.

  1. Я могу обработать это на стороне PHP, как я могу выбрать все записи, соответствующие указанным датам, а затем пропустить те, которые не соответствуют цене дано, но это дает проблему разбиения на страницы, а также неосуществимо для моего случая, не масштабируется.
  2. Я сохранил данные о ценах в Elasticsearch на основе диапазонов дат со средними ценами, такими как среднемесячная цена. Он охватывает некоторые случаи, но когда пользователь выбирает даты, которые находятся в более чем 1 диапазоне, он не может обработать. И не представляется возможным создать и сохранить все возможные комбинации начальной, конечной даты и средней цены, чтобы точно справиться с этим.

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

  1. Как правильно хранить и запрашивать данные этого типа. Использование Elasticsearch или любой другой альтернативы.
  2. Возможно ли в Elasticsearch или любом другом масштабируемом (выполнимом для поиска) инструменте сначала рассчитать цену на основе дат, а затем выполнить фильтрацию по этой рассчитанной цене.
...