RediSearch教程

RediSearch是一个强大的文本搜索和二级索引引擎,构建在Redis的顶部作为Redis模块。RediSearch是用C语言编写的,与其他开源搜索引擎相比,它的速度非常快。它实现了多种数据类型和命令,从根本上改变了你可以用Redis做什么。reresearch支持搜索和过滤功能,如地理空间查询、仅检索id(而不是整个文档)和自定义文档评分。聚合可以在定制管道中组合map、filter和reduce/group-by操作,这些操作可以在瞬间跨越数百万个元素。

reresearch还支持模糊前缀匹配的自动完成,以及将新文档原子实时插入到搜索索引中。有了最新的RediSearch 2.0版本,在现有数据上创建二级索引比以往任何时候都要容易。你可以只是添加RediSearch到你现有的Redis数据库,创建一个索引,并开始查询它,而不必迁移你的数据或使用新的命令添加数据到索引。这大大降低了新的RediSearch用户的学习曲线,并允许您在现有的Redis数据库上创建索引,甚至不需要重新启动它们。

步骤1。注册和订阅

遵循注册链接并订阅Redis企业云万博体育彩

Redisearch

步骤2。使用reresearch模块创建数据库

Redisearch

步骤3。连接到数据库

遵循链接以了解如何连接到数据库

步骤4。开始重新研究

首先,让我们创建一个基于电影信息的基本数据集,我们将使用它来展示如何:

  • 插入数据
  • 创建一个索引
  • 查询数据

Redisearch

将数据插入reresearch

现在可以插入一些数据了。这个例子使用的电影数据存储为Redis哈希,所以让我们插入几个电影:

HSET电影:11002标题“星球大战:第五集-帝国反击战”情节“卢克·天行者开始与尤达绝地训练”发行年1980类型“动作”评分8.7票1127635
(整数)6
> HSET电影:11003标题“教父”情节“一个有组织犯罪王朝的老族长把他的帝国的控制权转移给他的儿子”上映时间:1972年类型“戏剧”评分:9.2票1563839
(整数)6

你的Red万博体育彩is企业云数据库现在包含两个哈希。如果您知道movies (movies:11002)的键值,那么使用HMGET命令检索信息是很简单的:

> HMGET电影:11002标题评级
1)《星球大战5:帝国反击战》
2)“8.7”

在reresearchch中创建索引

为了能够查询字段上的哈希值,例如标题或类型,您必须首先创建一个索引。要创建索引,必须定义一个模式来列出被索引的字段及其类型,以及可以在查询中使用的字段。

使用FT.CREATE命令创建索引,如下所示:

> FT.CREATE idx:movies ON hash PREFIX 1 "movies:" SCHEMA title TEXT SORTABLE release_year NUMERIC SORTABLE rating NUMERIC SORTABLE genre TAG SORTABLE .
好吧

在上面的命令中,我们:

  • 创建索引idx:movies
  • 使用了一个由四个字段组成的模式:标题release e_year评级类型

不过,在对新索引运行查询之前,让我们仔细看看FT.CREATE命令的元素:

  • Idx:movies:索引的名称,在执行查询时将使用它
  • ON hash:要索引的结构的类型。(注意RediSearch 2.0只支持Hash结构,但是这个参数将允许RediSearch将来索引其他结构。)
  • 前缀1 " movies: ":应该被索引的键的前缀。这是一个列表,因为我们只想索引movies:*键,所以数字为1。如果你想用相同的字段索引电影和电视节目,你可以使用:
  • :定义索引的模式、字段和它们的类型。正如您在该命令中看到的,我们使用了TEXT、NUMERIC和TAG以及SORTABLE参数。

RediSearch 2.0引擎将使用PREFIX值扫描数据库,并基于模式定义更新索引。这使得向使用hash的现有应用程序添加索引变得很容易,不需要更改代码。

在reresearch索引中搜索电影

你现在可以使用FT.SEARCH搜索你的数据库,例如,搜索所有电影按发行年份排序:

> FT.SEARCH idx:movies * SORTBY release_year ASC返回2 title release_year
1)(整数)2
2)“电影:1003”
3) 1)“release_year”
2)“1972”
3)“标题”
4)《教父》
4)“电影:1002”
5) 1)“release_year”
2)“1980”
3)“标题”
4)《星球大战5:帝国反击战》

你也可以在索引中搜索包含“star”的“动作”电影(在我们的示例索引中,术语“star”只会出现在标题中):

> FT.SEARCH idx:movies "star @genre:{action}"返回2标题release e_year
1)(整数)1
2)“电影:1002”
3) 1)“标题”
2)《星球大战5:帝国反击战》
3)“release_year”
4)“1980”

search命令是搜索数据库的基本命令,它有许多选项,并与您可以在文档中找到的强大而丰富的查询语法相关联。(注意:您也可以使用索引来使用FT.AGGREGATE命令进行数据聚合。)

下一个步骤

Baidu