Оператор SQL IN в Redis от FT.Search/FT.Aggregate
У меня есть запрос, который мне нужно перевести из sql в redis . вот пример этого запроса
id IN(1,2,4,6)
Моя схема выглядит так:
FT.CREATE log // Index name
ON HASH // Indicates the type of data to index
PREFIX 1 "log:" // Tells the index which keys it should index
SCHEMA
id NUMERIC SORTABLE
finfo TEXT NOINDEX
https://redis.io/docs/stack/search/reference/query_syntax/
На одном сайте я видел пару примеров:
@id:(1|2|4|6)
но это не работает
Я хочу использовать ФИЛЬТР для отправки параметров в FT. модуль. что-то вроде того
FILTER "@id:(1|2|4|6)"
1 ответ
с ЦИФРОВЫМИ полями вы можете попробовать запросы диапазона, например:
FT.SEARCH log "@id:[1 6]"
в зависимости от формата вашего поля идентификатора будет лучше использоватьTAG
вместоNUMERIC
позволяя вам использовать префиксный поиск, например:
FT.SEARCH log "@id:{11*}"
или используя оператор OR «pipe» для нескольких значений, таких как:
FT.SEARCH log "id:{111 | 222 | 333 | 444}" DIALECT 3
дополнительную информацию можно найти в документации https://redis.io/docs/stack/search/reference/query_syntax/.