用途:存储整数或浮点数,可进行范围查询与排序。
选项:
SORTABLE
:允许用 SORTBY
排序NOINDEX
:不参与索引,仅供返回FT.CREATE idx ON HASH PREFIX 1 prod:
SCHEMA
price NUMERIC [SORTABLE] [NOINDEX]
# 查找 price 在 200 到 300 之间的文档
FT.SEARCH idx "@price:[200 300]"
# 开区间
FT.SEARCH idx "@price:[(100 (200]"
# 上下界省略表示 ±∞
FT.SEARCH idx "@price:[500 +inf]"
用途:存储经纬度(lon,lat),支持半径范围检索。
选项:
SORTABLE
:允许排序NOINDEX
:仅供返回,不参与检索FT.CREATE idx ON HASH PREFIX 1 city:
SCHEMA
coords GEO [SORTABLE] [NOINDEX]
# 查找距离 (2.34,48.86) 1000 公里内的城市
FT.SEARCH idx "@coords:[2.34 48.86 1000 km]"
更多地理形状(Geoshape)请见下节。
用途:存储点、线、面等几何体,支持点在形状内、形状相交等高级空间查询。
坐标类型:
SPHERICAL
(默认):地球球面坐标FLAT
:平面笛卡尔坐标选项:
NOINDEX
:仅供返回FT.CREATE idx ON HASH PREFIX 1 region:
SCHEMA
area GEOSHAPE [FLAT|SPHERICAL] [NOINDEX]
# 找出包含点 (2,2) 的几何体(需 DIALECT 2)
FT.SEARCH idx "(@area:[CONTAINS $pt])"
PARAMS 2 pt "POINT (2 2)"
RETURN 1 name
DIALECT 2
用途:存储机器学习生成的浮点向量,支持 KNN 相似度检索。
算法:
FLAT
:暴力搜索HNSW
:小世界图必选属性:
TYPE
:数据类型,如 FLOAT32
DIM
:向量维度DISTANCE_METRIC
:L2
、IP
(内积)等可选属性(视算法而定):如 M
, EF_CONSTRUCTION
(HNSW)等
FT.CREATE idx ON HASH PREFIX 1 vec:
SCHEMA
embedding VECTOR FLAT 6
TYPE FLOAT32 DIM 128 DISTANCE_METRIC L2
6
表示后面跟了 6 个属性:TYPE
、FLOAT32
、DIM
、128
、DISTANCE_METRIC
、L2
。用途:存储有限离散值,如类别、状态码等,按完整值匹配,无分词。
选项:
SEPARATOR
:自定义多值分隔符(默认 ,
)CASESENSITIVE
:大小写敏感(默认不敏感)SORTABLE
:支持排序NOINDEX
:不参与索引FT.CREATE idx ON HASH PREFIX 1 doc:
SCHEMA
tags TAG [SEPARATOR "|" ] [CASESENSITIVE] [SORTABLE]
# 查找包含标签 blue 的文档
FT.SEARCH idx "@tags:{blue}"
用途:全文检索,分词、词干提取,支持权重与排序。
选项:
WEIGHT
:字段相关度权重(默认 1.0)NOSTEM
:关闭词干提取PHONETIC
:启用双音素搜索(dm:en
等)SORTABLE
:支持排序NOINDEX
:不参与索引,仅供返回WITHSUFFIXTRIE
:为后缀/通配查询构建后缀树FT.CREATE idx ON HASH PREFIX 1 blog:
SCHEMA
title TEXT [WEIGHT 2.0] [SORTABLE]
content TEXT NOSTEM
email TEXT PHONETIC dm:en
# 任意文本字段中搜索 wizard
FT.SEARCH idx "wizard"
# 仅在 title 搜索 dogs
FT.SEARCH idx "@title:dogs"
等字符的前缀查询无效。NOINDEX
,节省内存。SORTABLE
,过多 sortable 将增加内存开销。WEIGHT
提升相关度。SEPARATOR
,避免与默认逗号冲突。通过以上示例与说明,你已掌握 RediSearch 的所有字段类型及其关键配置选项。结合业务需求和数据特点,灵活调整 Schema,既可实现强大的搜索功能,又能最大限度地优化内存与查询性能。