IK分词器
分词:把一段中文或者词组划分成一个个关键字,我们在搜索的时候会把自己的信息进行拆分,会把数据库中或者索引库中的数据进行分词,然后进行一个个匹配操作,默认的中文分词是将每一个看成一个词,比如“我爱王军”,会被拆分成“我”“爱”“王”“军”,这显然是不符合要求的。所以我们要安装中文分词器的Ik来解决这个问题
ik提供了两个分词算法:ik_smart和ik_max_word.其中ik_smart是最少切分,ik_max_word是最细粒度划分
首先安装IK分词器
ik分词器
下载完毕后,放入elasticsearch的插件目录重启即可。如图
![在这里插入图片描述](https://img-blog.csdnimg.cn/f911bd62d3f04d2bbddc363972fb86a6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
ik_smart
![在这里插入图片描述](https://img-blog.csdnimg.cn/3d9c4f8346344363a38edb654853c88e.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
由测试不难看出,最少切分是由网页自己理解来进行切分成最少的词组。
ik_max_word
![在这里插入图片描述](https://img-blog.csdnimg.cn/863cd3fd8a3845d4807c522c666f3251.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
最小粒度划分是将词组拆分成最小精度的划分,划分成每个可以理解的词组,
ElasticSearch命令
1.新建索引结构
通过put请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/ec05197d738e43c296acf3d555f8ba32.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a12464f1aee943308999b98cffbfa099.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
新建成功
2.查看索引基本信息
通过get请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/e9d59a03320f41edafc909cc3494a5b4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
3.向索引库中插入数据
通过Post请求
![在这里插入图片描述](https://img-blog.csdnimg.cn/79cdd8b5ea7e4ca6b7c4d4177e9f84e1.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/4c697ce453ad4391ae6e6a75e5620b99.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
插入成功
4.查看所有索引库的健康状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/2ef570754e93443e9dfa70cd146524a4.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
5 修改数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/2570ebba73624a188fa780d695fd1f6c.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
修改成功
![在这里插入图片描述](https://img-blog.csdnimg.cn/d66e39c0569d4924bde70e5879d91ceb.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
6.删除操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/8831cfbb884f43e488d67c105ccb4467.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
总结:使用Restful风格是ES推荐我们使用的。
文档操作
1.精确匹配查询
查询name为小陈的user数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/7b66ed9335f24deab2b2755b427da372.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
![在这里插入图片描述](https://img-blog.csdnimg.cn/a6f975ede00341b0862997c397b4cdca.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
2.排序
根据年龄降序排序得到数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/39fcd5a1d9a44e788b08923bb0b67a69.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
3.分页
将得到的数据进行分页
- from:从第几条数据开始
- size:一页显示几条数据
4.返回Bool值的多条件查询
查询名称为小红,年龄为23的数据,返回结果为Boolean类型
相当于
select * from user where name='小红'and age=23;
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a30febb5ca94d6fb1e7c39f7b581f5a.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
select * from user where name='小红'or age=23;
将must关键字修改为should
![在这里插入图片描述](https://img-blog.csdnimg.cn/b4e9e4a16ea54ff59e370082379e4352.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
5.按过滤条件查询
查询年龄20-30岁,名称为“小”的用户的数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/61240e859bd94ec6a04c24fa8eb81774.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
- gt: 大于
- it:小于
- gte:大于等于
- ite:小于等于
6.精确查询
term查询是直接通过倒排索引指定的词条进行精确查找的!
关于分词
- term,直接查询精确的
- match,会使用分词器解析!
两个类型 text keyword
以两个例子为证
keyword:
![在这里插入图片描述](https://img-blog.csdnimg.cn/227cc36d8c60412386e820a1d0b7d557.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
text:
![在这里插入图片描述](https://img-blog.csdnimg.cn/5da306c58a714687b32b2dae28713e61.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
keyword不会被分词器解析,而text类型会将词组进行最小拆分
精确查询例子:
![在这里插入图片描述](https://img-blog.csdnimg.cn/032ea2db54c74f26b9960468057473c3.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
多条件进行精确查询:
查询t1=22和t1=23的数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/940c5a3798264eb1a0066d1d6188b1e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
7.高亮查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/3506ef6f2d2245d9b88cf19667afc5f2.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)
可以在高亮字段上定义标签
![在这里插入图片描述](https://img-blog.csdnimg.cn/8f78e0d3e4954130b5bae988f1679545.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5b-15aW05aiHNg==,size_20,color_FFFFFF,t_70,g_se,x_16)