ElasticSearch概述
ElasticSearch,简称es,es是一个开源的高扩展式全文检索引擎,它可以近乎实时的存储,检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
ElasticSearch安装
声明:jdk1.8,最低要求!ElasticSearch客户端,界面工具!
window下安装
解压即可
![](https://img-blog.csdnimg.cn/8d3f94a8fd9247a6bc9f1f2d02ecee0f.png)
熟悉目录
bin 启动文件
config 配置文件
log4j2 日志配置文件
jvm.options java虚拟机相关配置
elasticsearch.yml elasticsearch的配置文件!默认9200端口
lib 相关依赖jar包
logs 日志
modules 功能模块
plugins 插件
启动访问9200
![](https://img-blog.csdnimg.cn/e7e0844b7a9e48009f184774ef40f01a.png)
安装可视化插件
解压即可
![](https://img-blog.csdnimg.cn/66e3409fab4c4b678eb1b3a072e458d5.png)
安装依赖后启动
![](https://img-blog.csdnimg.cn/fbce0915a703487db85ec4e182d7f30f.png)
访问地址并连接,发现跨域问题
![](https://img-blog.csdnimg.cn/5a15fe4c2fb748e3b697cade3e69cbfa.png)
配置ElasticSearch跨域支持(ElasticSearch config下的配置文件)
![](https://img-blog.csdnimg.cn/5c141b02701b464ab279fe0c1970595a.png)
再尝试连接
![](https://img-blog.csdnimg.cn/fa3cc5d06a434ebf92ee8ae6ab3a723c.png)
初学就把es当成数据库(跨域建立索引,文档(库中的数据))
安装Kibana
kibana是一个针对ElasticSearch的开源分析及可视化平台,查看交互存储在ElasticSearch索引中的数据,使用Kibana可以通过各种图标进行数据高级分析及展示。Kibana让海量数据更容易理解,它操作简单,基于浏览器的用户界面可以快速创建仪表盘实时显示ElasticSearch查询动态。
注意:Kibana要和ElasticSearch版本一致。
解压即可
![](https://img-blog.csdnimg.cn/d4edee156a854367b7052c94e16409df.png)
启动bin(kibana.bat)
![](https://img-blog.csdnimg.cn/d76875b54a0e4990ac5ead279bac14e5.png)
访问测试
![](https://img-blog.csdnimg.cn/60663fe6452b4a4ead7314c2bbd8487f.png)
汉化
![](https://img-blog.csdnimg.cn/270fc541999846e79874f95fa2c2cfe6.png)
ES核心概念
elasticsearch是面向文档的,一切都是json
物理设计:
elasticsearch在后台把索引分成多个分片,每个分片可以在集群中的不同服务器之间迁移。
一个人就是一个集群!集群默认名称就是elasticsearch
Relational DB |
Elasticsearch |
数据库(database) |
索引(indices) |
表(tables) |
types |
行(rows) |
documents |
字段(columns) |
fields |
文档
就是我们的一条条数据,之前说elasticsearch是面向文档的,那么就意味着索引和搜索数据的最小单位是文档。
类型
类型是文档的逻辑容器,就像关系型数据库一样,表格是行的容器。
索引
就是数据库!索引是映射类型的容器,elasticsearch中的索引是一个非常大的文档集合。索引存储了映射类型的字段和其他设置。
倒排索引
通过文章,获取里面的单词,此谓正向索引。
我们希望能够输入一个单词,找到含有这个单词,或者和这个单词有关系的文章,就是倒排索引。
IK分词器
分词:把一段文字划分成一个个关键字,我们在搜索的时候会对自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一个匹配操作。
IK提供了两个分词算法ik_smart 和 ik_max_word:ik_smart:为最少切分,ik_max_word:为最细粒度划分。
安装解压即可(解压放在elasticsearch插件目录下)
![](https://img-blog.csdnimg.cn/4f389e4471e34d0fbf08ea111f17e897.png)
重启elasticsearch
![](https://img-blog.csdnimg.cn/888f295eef0842969f96842c142e96a9.png)
查看elasticsearch的插件目录
![](https://img-blog.csdnimg.cn/516d9f1bae154083a9452144e9900ece.png)
测试
![](https://img-blog.csdnimg.cn/e3b1073180674a4db8a9e604a579227b.png)
![](https://img-blog.csdnimg.cn/7d23858873e04d7b88930f4fedd5bc43.png)
如上,如果不想刘亦菲三个字被拆分,可以在ik分词器里面配置。
![](https://img-blog.csdnimg.cn/8abd876dd2374aee83a13337e93b6072.png)
![](https://img-blog.csdnimg.cn/df58ed5d800c48aab5a6e181c6b547de.png)
重启测试
![](https://img-blog.csdnimg.cn/dea160c6bab4409db6a046ef50cbba88.png)
Rest风格说明
![](https://img-blog.csdnimg.cn/a4ad9a4e10aa43a0b88ba731e4e73f3e.png)
基础测试
1.创建一个索引
![](https://img-blog.csdnimg.cn/d6763f39ce40408fbcec807bfbb542e0.png)
数据查看/新增
![](https://img-blog.csdnimg.cn/be91d2f553634a82a0ba2964b35bda1a.png)
数据类型
字符串类型
text、keyword
数值类型
long、integer、short、byte、double、float、
日期类型
data
设置数据类型
![](https://img-blog.csdnimg.cn/e0fc09892b92481494db1344983a4da2.png)
获取索引信息
![](https://img-blog.csdnimg.cn/230b0245a4674833a09d9fbfcc8953dd.png)
默认匹配类型
![](https://img-blog.csdnimg.cn/609ca2d0898746098050d79eebdf45e7.png)
如果自己的文档字段类型没有指定,那么es会默认给我们指定
扩展:
GET _cat/health 查看健康值
GET _cat/indices 查看索引库
GET _cat/ 可以查看很多系统值
数据修改
旧方法,put旧值,缺陷当更新操作忘掉某一字段值,改字段值就会置空
![](https://img-blog.csdnimg.cn/3f7c52984ebc426fb1c169d78dfeeb8d.png)
现在方法
![](https://img-blog.csdnimg.cn/74cc9203bf0e46e6b80e9b716e5a9b98.png)
![](https://img-blog.csdnimg.cn/a7ec1aa0ded94cc28e742999266f53c0.png)
数据删除
删除索引
![](https://img-blog.csdnimg.cn/e8c8b50ec2964c629645151d6ab9a1f7.png)
删除文档
![](https://img-blog.csdnimg.cn/9dbcd3c7febf490ea01bbd59fc2e0016.png)
关于文档的数据操作
基本操作(crud)
![](https://img-blog.csdnimg.cn/c326c85c7581481a9a4a4abb956eb7c9.png)
简单的条件查询
![](https://img-blog.csdnimg.cn/b49896b30baf473dae05611a0bd8eccd.png)
复杂操作
查询:select(排序、分页、高亮、模糊查询、精准查询)
![](https://img-blog.csdnimg.cn/273f14eeb1b74ba794fd2b993d7bf366.png)
此处“刘亦菲”已放入lk分词器中当做一个词来处理,此外score的分数越高代表越匹配;
结果过滤
![](https://img-blog.csdnimg.cn/99e95e9a4bec4bda998551bed4bbe60d.png)
排序
![](https://img-blog.csdnimg.cn/7d6b6f3fa2f447a2905b0252a1ca6f58.png)
分页
![](https://img-blog.csdnimg.cn/e398a2f9d0664bbe9355aaa26426e90b.png)
布尔值查询(多条件查询)must相当于and
![](https://img-blog.csdnimg.cn/5b89914d463548acadbbac4848697aa7.png)
should相当于or
![](https://img-blog.csdnimg.cn/dd5992c5766e478fae6988e321033684.png)
must_not 相当于not(年龄不是25的数据)
![](https://img-blog.csdnimg.cn/2613d8e3aa5d439aa5f69b7759ee2625.png)
过滤器
![](https://img-blog.csdnimg.cn/53c5495c030f4c9797d0b7394594a1a1.png)
匹配多个条件
空格隔开匹配条件相当于or
![](https://img-blog.csdnimg.cn/810c07287ccb4ecfa3201a0aa9e8e93b.png)
关于分词
term 直接精确查询
match 会用分词器解析!(先分析文档,然后再通过分析的文档进行查询)
text会被分词解析器解析,而keyword不会
![](https://img-blog.csdnimg.cn/8470ea9a83f84c748811bc42be7b6c2b.png)
高亮查询
![](https://img-blog.csdnimg.cn/4579e86d26c44f5fbb83eb3100fe27a0.png)
集成SpringBoot
把连接对象交由spring管理
![](https://img-blog.csdnimg.cn/b9c57fd4758e469c9cadb1ac67066764.png)
创建索引
![](https://img-blog.csdnimg.cn/7fd7100ef5b845dfa04b92139210e235.png)
索引是否存在
![](https://img-blog.csdnimg.cn/30c01375ff874b34a4892873c1bb19a4.png)
删除索引
![](https://img-blog.csdnimg.cn/91a077d8ea8448639f04ae4b6468aefb.png)
测试创建文档
![](https://img-blog.csdnimg.cn/1a71afdf2d8d45aaa1fe7a87cee53e08.png)
获取文档判断是否存在
![](https://img-blog.csdnimg.cn/0b4ba217d8c84e748afbd24c49be7419.png)
获取文档信息
![](https://img-blog.csdnimg.cn/a3c21858d9664ed3953dfb71e4691381.png)
更新文档
![](https://img-blog.csdnimg.cn/a180ee647d44402a910c9171783ec6b8.png)
删除文档
![](https://img-blog.csdnimg.cn/cbf3e594a0d041619ea2acc1a60ee8f9.png)
批量插入数据(不存在索引会自动创建)
![](https://img-blog.csdnimg.cn/2654c0bf66974ea684a7a971a7c31f5f.png)
精确查找
![](https://img-blog.csdnimg.cn/8de068c5909441f3a2fe155c9ffc440c.png)