Разместите свой проект бесплатно и начните получать предложения от фрилансеров-исполнителей уже спустя минуты после публикации!

Подготовить индекс и 3 запроса к Elasticsearch6

истекло время актуальности


В таблице программы передач телеканалов имеется около 700К записей.

Запись имеет след. поля:

  • program_id long
  • channel_id long
  • name text
  • description text
  • dt_start date
  • dt_end date


Необходимо подготовить след. запросы:

1. Выборка текущей и последующих передач для группы каналов:

> FOR channel_id IN (X, Y, Z) EACH dt_end > NOW() LIMIT N ORDER dt_end ASC

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

2. Поиск по подстроке в названии передачи по всем каналам. Здесь нужно точное соответствие фрагмента в любом месте. Это может быть и часть слова, и целая фраза:

> name LIKE %отел%
Т/с. Отель Элеон. 49-я серия
Отель Трансильвания
Всё, что вы хотели знать, но боялись спросить. Выпуск 98-й

3. Поиск максимально похожих по названию передач. Задача - выборка всех выпусков заданной передачи. Не знаю на сколько реализуемо средствами Люцена, но не хотелось бы писать лапшу из ifов 😬)

> channel_id = X AND name LIKE "Т/с. Отель Элеон. 49-я серия"
Премьера! Отель Элеон
Отель Элеон
Т/с. Отель Элеон. Найдите мои деньги!
Т/с. Отель Элеон. 52-я серия

Но не 

Отель Трансильвания
Гранд Отель Европа
Отель Люкс
Бурдж-эль-Араб - отель на миллиард