С фронта прилетает три параметра:
1. State - строка
2. Categories - массив строк. Строки могут состоять из нескольких слов.
3. Tags - аналогично категориям.
Все параметры необязательные.
Если передано несколько, нужно реализовать их связку через И (и совпадение штата, и категории, и тегов). Если передано несколько категорий или тегов, совпадение хотя бы по одному из них.
Т.е. на запрос штат = Аляска, категории = ["категория 1", "категория 2"] подойдут ответы
- штат = Аляска, категории = категория 1;
штат = Аляска, категории = категория 2;
штат = Аляска, категории = [категория 1, категория 2]
штат = Аляска, категории = [категория 1, категория 3] (хотя бы одна из запрашиаемых категорий).
не подойдут
- штат = Юта, категории = категория 1
- штат = Аляска, категории = 3
- штат = Аляска, категории = 1 (название категории должно быть 1-в-1)
На эластиксёрч шлю запросы с питона. Взял либу
https://elasticsearch-dsl.readthedocs.io/en/latest/Собрал три фильтра через Q объекты (в них использовал match).
Списки категорий и тегов разбил на подфильтры через ИЛИ.
Но что-то я сделал не так, видимо, так как ищет не по точным названиям категории/тега.
В чем может быть проблема, не подскажете?