索引和查询文档

了解如何将 Redis 查询引擎与 JSON 和 hash 文档一起使用。

本示例展示了如何为 JSON 文档创建 搜索索引 并针对该索引运行查询。接着展示了 hash 文档等效代码的细微差异。

初始化

确保你已安装 Redis Open Source 或其他可用的 Redis 服务器。如果尚未安装,请安装 redis-py 客户端库。

添加以下依赖项。除了 Path 类(它是 JSON 特有的,请参阅 路径 查看 JSON 路径语法的描述)外,所有依赖项都适用于 JSON 和 hash。

创建数据

创建一些测试数据以添加到数据库中。下方显示的示例数据兼容 JSON 和 hash 对象。

添加索引

连接到 Redis 数据库。以下代码展示了最基本的连接,但请参阅 连接到服务器 了解更多可用的连接选项。

为 JSON 数据创建索引。以下代码指定只索引键前缀为 user: 的 JSON 文档。有关更多信息,请参阅 查询语法

添加数据

将三组用户数据作为 JSON 对象添加到数据库中。如果你使用带有 user: 前缀的键,Redis 会在你添加对象时自动为其建立索引

查询数据

现在可以使用索引搜索 JSON 对象。下方查询搜索任意字段包含文本“Paul”且 age 值在 30 到 40 范围内的对象

指定查询选项以仅返回 city 字段

使用聚合查询统计每个城市的用户数量。

与 hash 文档的区别

hash 文档的索引与 JSON 索引非常相似,但需要指定一些略微不同的选项。

为 hash 索引创建 schema 时,无需为字段添加别名,因为无论如何都会使用基本名称来访问这些字段。此外,创建索引时必须将 IndexType 设置为 HASH。以下代码展示了这些变化,创建了一个名为 hash-idx:users 的新索引,该索引与前例中用于 JSON 文档的 idx:users 索引基本相同。

使用 hset() 添加 hash 文档,而不是 json().set(),但同样的扁平 userX 字典对于 hash 或 JSON 同样适用

这里的查询命令对于 hash 和 JSON 的工作方式相同(但 hash 索引的名称不同)。结果格式几乎相同,不同之处在于字段直接在结果 Document 对象中返回,而不是在包含的 json 字典中返回

更多信息

请参阅 Redis 查询引擎 文档,了解所有查询功能的完整描述及示例。

评价此页
回到顶部 ↑