Оператор 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/.

Другие вопросы по тегам