Elasticsearch入门
Elasticsearch简介
-
一个分布式的、Restful风格的搜索引擎。
分布式:多台服务器集群部署
Restful风格:设计风格,规定了不同种类请求格式,是对请求的标准的一种描述
-
支持对各种类型的数据的检索。结构化 非结构化 地理位置 等
-
搜索速度快,可以提供实时的搜索服务。 先分词,然后去索引查
-
便于水平扩展,每秒可以处理PB级海量数据。
集群式服务器,便于加服务器(水平扩展),也能同时处理很多数据
Elasticsearch术语
es可以看作特殊的数据库
存储数据相关术语:Elasticsearch与MySql对应关系如下
-
索引 — 数据库,6.0之后对应表
-
类型 — 表,7.0开始类型废弃
-
文档 — 行
-
字段 — 列(属性)
-
集群:一台或多台服务器组合在一起,提高整体数据处理能力
-
节点:集群中的一台服务器
-
分片:对索引进一步划分,一个索引在存时,可以拆分成多个分片进行存储,以提高并发处理能力
-
副本:对分片的备份,一个分片可有多个副本,提高可用性
安装elasticsearch服务器
官网 https://www.elastic.co
https://www.elastic.co/cn/downloads/elasticsearch
不下载最新的版本,因为springboot中父pom用的是6.4.3,已经过测试,是兼容的。用7.0往上不匹配
配置elasticsearch.yml 文件
cluster.name: my-application 默认集群名
cluster.name: nowcoder
path.data: /path/to/data es存数据的默认路径
path.data: E:\Work\data\elasticsearch-6.4.3\data
path.logs: /path/to/logs es存日志的默认路径
path.logs: E:\Work\data\elasticsearch-6.4.3\logs
配置系统环境变量
D:\LenovoSoftstore\Install\elasticsearch-6.4.3\bin
中文分词插件
es默认支持英文分词,按空格分就可
而中文分词需要去第三方下载插件:去GitHub上搜索elasticsearch ik
下载版本要和elasticsearch的版本一致
安装时,先在elasticsearch下plugins文件中新建ik文件夹,再将压缩文件解压到ik中
elasticsearch ik中内置了很多词典用于分词
若希望添加网络新词到词典中,在config文件夹中找IKAnalyzer.cfg.xml
将config中自定义的词典声明到IKAnalyzer.cfg.xml即可
模拟客户端Postman
https://www.getpostman.com
通过命令行cmd操作es的命令太长了,不容易记
postman可以模拟web客户端,发布http请求
用postman给es发搜索请求,更简单
非必须,为了操作简便
使用es
在bin中以管理员方式运行
提示绑定9200端口(es默认端口)时,即为启动成功
命令行操作es
查看集群健康状况:green为健康
查看节点详情(查询是GET请求)
看服务器有多少个索引
yellow相当于警告,能用但不是最健康状态
创建索引:PUT请求 指定服务器\索引名
返回的索引为json格式
删除索引:DELETE请求
Postman操作es
查询索引
新建test索引
删除test索引
给索引中插入一行数据
localhost:9200/test/_doc/1
test是指定索引。如果指定的索引不存在,会自动建索引,插数据
_doc为固定参数位。因为废弃了文档类型,类型位就用_doc占位
1是id
数据在请求中体携带,并以json形式传数据
将数据写成json格式
结果:
查test索引下id为1的数据
删除test索引下id为1的数据
es搜索
数据1
数据2
数据3
从test索引中搜索信息
?开始为搜索条件,不加搜索条件表示搜test索引中的全部数据
在test搜索 title 中包含 互联网 的数据
在test搜索 content 中包含 实习运营 的数据
进行了分词的搜索
第一条数据匹配运营,第二条数据匹配实习
复杂搜索
复杂的搜索,在body中写
multi_match 多字段匹配