Я работаю над сайтом бронирования, разработанным в PHP. Цены на товары меняются ежедневно. Я хочу предоставить пользователю дату начала, дату окончания, минимальную цену, максимальную цену. Мой пример использования здесь:
- Когда пользователь выбирает дату начала, дату окончания, минимальную цену и максимальную цену, я должен иметь возможность показывать товары с точной расчетной средней ценой за день, и эта цена должна соответствовать к минимальным / максимальным ценовым фильтрам.
Я пытаюсь добиться этого с помощью Elasticsearch. Я пробовал несколько способов и получил следующие проблемы.
- Я могу обработать это на стороне PHP, как я могу выбрать все записи, соответствующие указанным датам, а затем пропустить те, которые не соответствуют цене дано, но это дает проблему разбиения на страницы, а также неосуществимо для моего случая, не масштабируется.
- Я сохранил данные о ценах в Elasticsearch на основе диапазонов дат со средними ценами, такими как среднемесячная цена. Он охватывает некоторые случаи, но когда пользователь выбирает даты, которые находятся в более чем 1 диапазоне, он не может обработать. И не представляется возможным создать и сохранить все возможные комбинации начальной, конечной даты и средней цены, чтобы точно справиться с этим.
Я знаю, что это не новый случай, многие веб-сайты делают это. Я хочу знать наиболее подходящее решение для этого случая. Мне нужна помощь в поиске
- Как правильно хранить и запрашивать данные этого типа. Использование Elasticsearch или любой другой альтернативы.
- Возможно ли в Elasticsearch или любом другом масштабируемом (выполнимом для поиска) инструменте сначала рассчитать цену на основе дат, а затем выполнить фильтрацию по этой рассчитанной цене.