仿牛客网社区开发——第6章 Elasticsearch,分布式搜索引擎
作者:互联网
ElasticSearch 入门
ElasticSearch 简介
- 一个分布式的、Restful 风格的搜索引擎
- 支持对各种类型的数据的检索
- 搜索速度快,可以提供实时的搜索服务
- 便于水平扩展,每秒可以处理 PB 级海量数据
ElasticSearch 术语
- 索引:相当于数据库中的库,6.0 版本后相当于表
- 类型:一开始相当于数据库的表,6.0 版本之后逐渐被弃用
- 文档:存储在 Elasticsearch 中的一个 JSON 格式的字符串,它就像在关系数据库中表的一行
- 字段:相当于关系数据库中表的列,每个字段都对应一个字段类型
- 集群:集群由一个或多个节点组成,对外提供服务
- 节点:节点是组成集群的基本服务单元,集群中的每个运行中的服务器都可称之为节点
- 分片:当索引的数据量太大时,受限于单个节点的内存、磁盘处理能力等,节点无法足够快地响应客户端的请求,此时需要将一个索引上的数据进行水平拆分。拆分出来的每个数据部分称之为一个分片
- 副本:对分片的备份,一个分片可以包含多个副本
下载安装 ElasticSearch
官网地址:https://www.elastic.co/cn/
- 下载前要注意版本和当前 SpringBoot 中父 Pom 中声明的版本(经过测试没问题的、兼容的版本)是否一致,ElasticSearch 在 6-7 版本有较大变化
- 配置集群的名字、存放数据的位置、存放日志的路径
cluster.name: nowcoder
path.data: D:\Java\Java\ElasticSearch\data
path.logs: D:\Java\Java\ElasticSearch\logs
- 配置环境变量,将其 bin 目录加到系统变量的 Path 下
安装中文分词工具
- 在 Github 上搜索 Elasticsearch ik,注意要与 Elasticsearch 版本相对应
- 安装路径固定解压到 Elasticsearch 安装目录的 plugins 下的 ik 目录
- 可以在 IKAnalyzer.cfg.xml 中配置自己的扩展字典(或扩展停止词字典,一般不需要)
安装 Postman (方便测试,非必须)
以客户端的形式对 Elasticsearch 服务器进行操作(非必须,也可以使用命令行,但是更加麻烦)
常用命令(使用命令行)
启动服务器,执行 bat 命令
Windows 用 .bat 的,Linux / Unix 用不带 .bat 的
查看 ES 集群的健康状态
curl -X GET "localhost:9200/_cat/health?v"
查看节点
curl -X GET "localhost:9200/_cat/nodes?v"
当前只有一个节点
查看索引
curl -X GET "localhost:9200/_cat/indices?v"
当前没有索引
创建索引
curl -X PUT "localhost:9200/test"
yellow 不是最健康的状态,没有备份
删除索引
curl -X DELETE "localhost:9200/test"
常用命令(使用 Postman)
(和上述重复的不再演示)
- 如果路径中指定了不存在的索引会自动建立索引
- _doc 是类型占位符,在 7.0 版本中删除了类型
- 在 Body 里使用 JSON 字符串添加数据
- 服务器地址/索引/占位符/id
- 更改数据可以使用 PUT,会替换旧数据
向 Elasticsearch 服务器添加数据
更新命令也一样
PUT: localhost:9200/test/_doc/3
查询指定数据
GET: localhost:9200/test/_doc/3
删除指定数据
DELETE: localhost:9200/test/_doc/5
测试中文搜索分词
先添加几条数据
不加条件:
GET: localhost:9200/test/_search
加条件:
GET: localhost:9200/test/_search?q=content:后端开发
复杂搜索
GET: localhost:9200/test/_search
{
"query":{
"multi_match":{
"query":"互联网开发",
"fields":["title","content"]
}
}
}
注意点:
- 索引、类型、文档、字段的含义,和数据库中各个概念的对应
- ES 的版本以及中文分词工具的版本
- Postman 的使用
- 常用命令,尤其是复杂搜索
标签:仿牛,9200,GET,索引,Elasticsearch,客网,test,ElasticSearch,localhost 来源: https://www.cnblogs.com/CWZhou/p/16411590.html