ElasticSearch入门学习笔记
Posted dxj1016
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ElasticSearch入门学习笔记相关的知识,希望对你有一定的参考价值。
1、前言
1.1、课程安排
1.2、Doug Cutting
1.3、Lucene
2、ElasticSearch介绍
2.1、概述
历史
谁在使用
2.2、ES和solr的区别
ElasticSearch简介
Solr简介
Lucene简介
ElasticSearch和Solr比较
2.3、总结
3、ElasticSearch安装
3.1、安装下载
官网下载极慢,建议翻墙,网盘中下载即可
3.2、熟悉目录及启动访问
解压之后有如下目录
目录介绍
启动,访问9200
访问测试
3.3、安装可视化界面es(head的插件)
-
进入插件目录,使用命令
cnpm install
安装
-
使用命令
npm run start
启动
-
使用启动后的网址访问,然后连接es测试发现出现跨域问题
-
解决方法:先关掉es,打开es配置文件
elasticsearch.yml
添加如下内容,意思是开启跨域解决,允许全部访问
-
重新启动es服务器,然后再次连接,没有出现跨域问题
把es当成一个数据库,可以创建索引(数据库)、文档(库中的数据)
3.4、了解KLE
3.5、安装Kibana
-
下载后解压的目录
-
启动
-
访问测试
-
开发工具(PostMan、curl、head、谷歌浏览器插件测试)
之后的所有操作都会在这里进行。 -
汉化,找到Kibana目录下的config里面的配置文件
kibana.yml
,添加i18n.locale: "zh-CN"
如下
-
重启kibana
4、ES的核心概念
4.1、一切都是JSON
4.2、物理设计
4.3、逻辑设计
4.4、文档
4.5、类型
4.6、索引
4.7、物理设计:节点和分片 如何工作
4.8、倒序索引
5、IK分词器插件
5.1、概念
5.2、安装
- 下载地址
- 下载完毕之后,放到我们的elasticsearch插件即可(zai plugins文件夹下新建个ik文件,将解压后的文件都放进ik)
3. 重启观察ES,没有出现闪退可以看到分词器被加载了。
启动出现闪退可能是你安装的ik错了,或者放的目录不对,还有可能是你的ik版本跟es版本不一致;还有可能plugins目录下存在解析不了的文件,比如压缩包
启动ik出现闪退解决方法详情请看这里
4. 命令elasticsearch-plugin list
查看加载进来的插件
5. 使用kibana进行测试
查看不同的分词器效果
当输入喜欢狂神说java的时候:
发现问题:狂神说被拆开了,这种自己需要的词,需要自己加到我们的分词器的字典中
ik分词器增加自己的配置
比如自己写个kuangshen.dic的分词器字典文件
6. 重启es,看细节
再次测试一下狂神说看看效果!如果自定义字典无效,可以看一下是不是字典文件的格式不对,要使用utf-8格式。
7. 以后的话,我们需要自己胚子,分词就在自己定义的dic文件中进行配置即可。
5.3、Rest风格说明
6、索引的基本操作
6.1、创建一个索引
(开启es,开启head插件,开启kibana)
PUT /索引名/类型名/文档id
完成了自动增加了索引,数据也成功的添加了,这就是可以把当成数据库学习的原因。
6.2、数据类型
6.3、指定字段的类型
(不创建规则就会使用默认的,就像上面的put那样)
6.4、获取这个规则,可以通过GET请求获取具体的信息
6.5、查看默认的信息
如果自己的文档字段没有指定,那么es就会给我们默认配置字段类型。
6.6、获取索引信息
扩展:通过elasticsearch 索引情况。通过get _cat/可以获取es的当前的很多信息
6.7、 修改索引
提交还是可以使用PUT即可,然后覆盖
最新的修改方法:
6.8、删除索引
7、文档的基本操作(重点)
7.1、基本操作
-
添加数据 PUT
-
获取数据 GET
-
更新数据 PUT
-
新的更新操作 POST _update
-
简单搜索
7.2、复杂搜索操作
select(排序,分页,高亮,模糊查询,精准查询)
模糊查询
输出结果不想那么多,怎么实现
我们之后使用Java操作es,所有的方法和对象就是这里面的key
排序
分页查询
布尔值查询(多条件查询)
must(and),所有的条件都要符合 where id=1 and name=xxx;
should(and),所有的条件都要符合 where id=1 or name=xxx;
must_not(not)
过滤器filter(gt大于,gte大于等于,lt小于,Ite小于等于)
匹配多个条件
精确查询
term查询是直接通过到排序索引指定的词条进程精确查找的
关于分词:
- term:直接查询精确的
- match:会使用分词器解析(先分析文档,然后再通过分析的文档进行查询)
两个类型 text、keyword
多个值匹配查询
高亮查询
总结
8、SpringBoot集成ES
- 找官方文档
- 找到原生的依赖
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.12.1</version>
</dependency>
-
找对象
-
配置项目
-
创建项目,导入依赖
创建项目完成后,修改jdk版本为8,修改java编译版本8,javascript版本6。
问题:一定要保证我们导入的依赖和我们的es版本一致
-
springboot和es集群(创建config类集成es
) -
具体测试API
- 创建索引
- 判断索引是否存在
结果不对,可能是导包导错了。 - 删除索引
- 创建文档
创建实体类
要使用json所以添加依赖fastjson
现在可以使用hutool的工具类,fastjson经常有问题,因为安全漏洞不停更新
- 判断文档是否存在
- 获取文档信息
- 更新文档的信息
- 删除文档记录
- 批量插入数据
- 批量修改和删除,是在上面的批量插入代码修改如下代码
- 搜索
- 创建索引
9、实战
9.1、爬虫
-
创建项目(修改版本,如果版本本身没有问题就不用改)
-
关闭缓存
-
导入老师给的前端页面资源(资源我没找到)
-
写controller测试一下项目可不可以
-
爬取数据(获取请求返回的页面信息,筛选出我们想要的数据就可以了)
工具类
实体类
修改上面的工具类:
输出结果:
不用mian方法,用依赖注入:
修改上面这里的代码
配置类,spring整合es
service层
controller层
9.2、搜索高亮
加入高亮:
解析高亮:
controller层
以上是关于ElasticSearch入门学习笔记的主要内容,如果未能解决你的问题,请参考以下文章