在前面的步骤中,您只使用了少量电影,现在让我们导入
文件 https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_movies.redis
是一个创建 922 个 Hashes 的脚本。
电影 Hashes 包含以下字段。
movie:id
: 电影的唯一 ID,该 ID 在此数据库中是内部的(用作 Hashes 的键)title
: 电影的标题。plot
: 电影的摘要。genre
: 电影的类型,目前电影只有一种类型。release_year
: 电影的上映年份,以数字形式表示。rating
: 代表公众对这部电影的评分的数值。votes
: 投票数。poster
: 电影海报的链接。imdb_id
: 电影在 IMDB 数据库中的 ID。<details>
<summary>Sample Data: <b>movie:343</b></summary>
<table>
<thead>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<th>title</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Spider-Man
</td>
</tr>
<tr>
<th>plot</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
When bitten by a genetically modified spider a nerdy shy and awkward high school student gains spider-like abilities that he eventually must use to fight evil as a superhero after tragedy befalls his family.
</td>
</tr>
<tr>
<th>genre</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Action
</td>
</tr>
<tr>
<th>release_year</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
2002
</td>
</tr>
<tr>
<th>rating</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
7.3
</td>
</tr>
<tr>
<th>votes</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
662219
</td>
</tr>
<tr>
<th>poster</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
https://m.media-amazon.com/images/M/MV5BZDEyN2NhMjgtMjdhNi00MmNlLWE5YTgtZGE4MzNjMTRlMGEwXkEyXkFqcGdeQXVyNDUyOTg3Njg@._V1_SX300.jpg
</td>
</tr>
<tr>
<th>imdb_id</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
tt0145487
</td>
</tr>
<tbody>
</table>
</details>
文件 https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_theaters.redis
是一个创建 117 个 Hashes 的脚本(用于地理空间查询)。
剧院 Hashes 包含以下字段。
theater:id
: 剧院的唯一 ID,该 ID 在此数据库中是内部的(用作 Hashes 的键)name
: 剧院的名称address
: 街道地址city
: 城市,在此示例数据集中,所有剧院都在纽约zip
: 邮政编码phone
: 电话号码url
: 剧院的 URLlocation
: 包含用于创建地理索引字段的 longitude,latitude
<details>
<summary>Sample Data: <b>theater:20</b></summary>
<table>
<thead>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<th>name</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Broadway Theatre
</td>
</tr>
<tr>
<th>address</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
1681 Broadway
</td>
</tr>
<tr>
<th>city</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
New York
</td>
</tr>
<tr>
<th>zip</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
10019
</td>
</tr>
<tr>
<th>phone</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
212 944-3700
</td>
</tr>
<tr>
<th>url</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
https://www.shubertorganization.com/theatres/broadway.asp
</td>
</tr>
<tr>
<th>location</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
-73.98335054631019,40.763270202723625
</td>
</tr>
<tbody>
</table>
</details>
文件 https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_users.redis
是一个创建 5996 个 Hashes 的脚本。
用户 Hashes 包含以下字段。
user:id
: 用户的唯一 ID。first_name
: 用户的名字。last_name
: 用户的姓氏。email
: 用户的电子邮件。gender
: 用户的性别 (female
/male
)。country
: 用户的国家名称。country_code
: 用户的国家代码。city
: 用户的城市。longitude
: 用户的经度。latitude
: 用户的纬度。last_login
: 用户的最后登录时间,以 EPOC 时间表示。ip_address
: 用户的 IP 地址。<details>
<summary>Sample Data: <b>user:3233</b></summary>
<table>
<thead>
<tr>
<th>Field</th>
<th>Value</th>
</tr>
</thead>
<tbody>
<tr>
<th>first_name</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Rosetta
</td>
</tr>
<tr>
<th>last_name</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Olyff
</td>
</tr>
<tr>
<th>email</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
rolyff6g@163.com
</td>
</tr>
<tr>
<th>gender</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
female
</td>
</tr>
<tr>
<th>country</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
China
</td>
</tr>
<tr>
<th>country_code</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
CN
</td>
</tr>
<tr>
<th>city</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
Huangdao
</td>
</tr>
<tr>
<th>longitude</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
120.04619
</td>
</tr>
<tr>
<th>latitude</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
35.872664
</td>
</tr>
<tr>
<th>last_login</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
1570386621
</td>
</tr>
<tr>
<th>ip_address</th>
<td style='font-family:monospace; font-size: 0.875em; "'>
218.47.90.79
</td>
</tr>
<tbody>
</table>
</details>
在导入数据之前,请清除数据库
> FLUSHALL
导入文件最简单的方法是使用 redis-cli,使用以下终端命令:
$ curl -s https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_movies.redis | redis-cli -h localhost -p 6379 --pipe
$ curl -s https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_theaters.redis | redis-cli -h localhost -p 6379 --pipe
$ curl -s https://raw.githubusercontent.com/RediSearch/redisearch-getting-started/master/sample-app/redisearch-docker/dataset/import_users.redis | redis-cli -h localhost -p 6379 --pipe
使用 Redis Insight 或 redis-cli
您可以查看数据集:
> HMGET "movie:343" title release_year genre
1) "Spider-Man"
2) "2002"
3) "Action"
> HMGET "theater:20" name location
1) "Broadway Theatre"
2) "-73.98335054631019,40.763270202723625"
> HMGET "user:343" first_name last_name last_login
1) "Umeko"
2) "Castagno"
3) "1574769122"
您也可以使用 DBSIZE
命令查看数据库中的键数。
创建 idx:movie
索引:
> FT.CREATE idx:movie ON hash PREFIX 1 "movie:" SCHEMA title TEXT SORTABLE plot TEXT WEIGHT 0.5 release_year NUMERIC SORTABLE rating NUMERIC SORTABLE votes NUMERIC SORTABLE genre TAG SORTABLE
"OK"
电影现在已编入索引,您可以运行 FT.INFO "idx:movie"
命令并查看返回的 num_docs
值。(应为 922)。
创建 idx:theater
索引
此索引主要用于展示 Redis Stack 中的地理空间搜索功能。
在前面的示例中,我们创建了三种类型的索引
Text
Numeric
Tag
您现在将发现一种新的字段类型:Geo
。
的 theater
Hashes 包含一个字段 location
,其中包含经度和纬度,将在索引中按如下方式使用
> FT.CREATE idx:theater ON hash PREFIX 1 "theater:" SCHEMA name TEXT SORTABLE location GEO
"OK"
影院已建立索引,您可以运行 FT.INFO "idx:theater"
命令并查看 num_docs
返回值。(应为 117)。
创建 idx:user
索引
> FT.CREATE idx:user ON hash PREFIX 1 "user:" SCHEMA gender TAG country TAG SORTABLE last_login NUMERIC SORTABLE location GEO
"OK"