转载

SpringBoot系列——ElasticSearch

前言

本文记录安装配置ES环境,在SpringBoot项目中使用SpringData-ElasticSearch对ES进行增删改查通用操作

ElasticSearch官网: https://www.elastic.co/cn/products/elasticsearch

SpringData-ElasticSearch官网: https://spring.io/projects/spring-data-elasticsearch

安装配置ES环境

过程参考这篇文章: https://blog.csdn.net/chen_2890/article/details/83757022

下载ES

链接: https://www.elastic.co/cn/downloads/elasticsearch

选择最新版下载即可,Elasticsearch无需安装,解压即用,直接双击 elasticsearch.bat 运行

PS:下载下来后发现,最新版需要java jdk11,我的是jdk1.8,所有还是下载回6.X版本吧....

SpringBoot系列——ElasticSearch

安装Head插件

下载地址: https://github.com/mobz/elasticsearch-head

PS:个人觉得,这个插件就类似PLSQL、Navicat工具,作用差不多

注意:es5以上版本安装head需要安装node和grunt,执行 npm install -g grunt-cli 安装grunt

SpringBoot系列——ElasticSearch

第一步:进入Elasticsearch安装目录下的config目录,修改elasticsearch.yml文件.在文件的末尾加入以下代码

http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

然后去掉network.host: 192.168.0.1的注释并改为network.host: 0.0.0.0,去掉cluster.name;node.name;http.port的注释(也就是去掉#)忽略所有注释,最终的配置是

cluster.name: springboot-es
node.name: node-1
network.host: 0.0.0.0
http.port: 9200

http.cors.enabled: true 
http.cors.allow-origin: "*"
node.master: true
node.data: true

第二步:双击elasticsearch.bat启动Elasticsearch,浏览器访问9200端口

SpringBoot系列——ElasticSearch

第三步:在https://github.com/mobz/elasticsearch-head中下载head插件,选择下载zip

第四步:解压到指定文件夹下,修改Gruntfile.js 在对应的位置加上 hostname:'*'

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

第五步:打开cmd命令行窗口 ,在解压目录下执行npm install 安装,完成后执行grunt server 或者 npm run start 运行head插件,如果运行不成功建议重新安装grunt

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

打开浏览器访问9100端口

SpringBoot系列——ElasticSearch

配置IK分词器

注意:你的Elasticsearch和IK分词器必须版本统一

SpringBoot系列——ElasticSearch

GitHub地址: https://github.com/medcl/elasticsearch-analysis-ik

下载地址: https://github.com/medcl/elasticsearch-analysis-ik/releases

解压后把文件夹复制到ES的的plugins目录下面,然后重启ES

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

使用postman测试分词效果

如果是ik分词插件是6.x版本的,只能用postman测试,而且查询条件要放在body体内,如果直接在url加上查询条件会报错

http://localhost:9200/_analyze?analyzer=ik_max_word&text=我爱中华人民共和国

SpringBoot系列——ElasticSearch

{
    "tokens": [
        {
            "token": "我",
            "start_offset": 0,
            "end_offset": 1,
            "type": "CN_CHAR",
            "position": 0
        },
        {
            "token": "爱",
            "start_offset": 1,
            "end_offset": 2,
            "type": "CN_CHAR",
            "position": 1
        },
        {
            "token": "中华人民共和国",
            "start_offset": 2,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 2
        },
        {
            "token": "中华人民",
            "start_offset": 2,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 3
        },
        {
            "token": "中华",
            "start_offset": 2,
            "end_offset": 4,
            "type": "CN_WORD",
            "position": 4
        },
        {
            "token": "华人",
            "start_offset": 3,
            "end_offset": 5,
            "type": "CN_WORD",
            "position": 5
        },
        {
            "token": "人民共和国",
            "start_offset": 4,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 6
        },
        {
            "token": "人民",
            "start_offset": 4,
            "end_offset": 6,
            "type": "CN_WORD",
            "position": 7
        },
        {
            "token": "共和国",
            "start_offset": 6,
            "end_offset": 9,
            "type": "CN_WORD",
            "position": 8
        },
        {
            "token": "共和",
            "start_offset": 6,
            "end_offset": 8,
            "type": "CN_WORD",
            "position": 9
        },
        {
            "token": "国",
            "start_offset": 8,
            "end_offset": 9,
            "type": "CN_CHAR",
            "position": 10
        }
    ]
}

到这里,ES环境算是搭建成功了

正常情况下,直接启动ES就可以跑项目了,如果想要直观的看到数据,就启动head插件

整合通用代码

工程结构

与我们之前的通用JPA差不多,风格统一,也是直接单表基础通用增删改查,一人挖井,全村喝水

SpringBoot系列——ElasticSearch

创建索引、映射

相当于数据库、数据表

SpringBoot系列——ElasticSearch

save接口

无id,新增

SpringBoot系列——ElasticSearch

有id,更新,可局部更新

SpringBoot系列——ElasticSearch

get接口

SpringBoot系列——ElasticSearch

delete接口

SpringBoot系列——ElasticSearch

list接口

测试list、page接口前,先调用batchSave生成测试数据

SpringBoot系列——ElasticSearch

可支持排序跟多条件等值查询

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

page接口

测试list、page接口前,先调用batchSave生成测试数据

SpringBoot系列——ElasticSearch

page与list相似,但多了分页条件

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

bug记录

ik分词我发现了一个bug,不知道是不是我没设置对的原因,用title分词去查询的时候, 小米 手机 单独查是没问题, 小米手机 查就查不到数据

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

SpringBoot系列——ElasticSearch

后记

springboot整合springdata-es就到这里,还差一个高亮显示设置了没见有效果,后面再查一下资料,实在不行就查询回来后收到设置高亮算了,这些后面再补充吧

代码开源

代码已经开源、托管到我的GitHub、码云:

GitHub: https://github.com/huanzi-qch/springBoot

码云: https://gitee.com/huanzi-qch/springBoot

原文  http://www.cnblogs.com/huanzi-qch/p/11586205.html
正文到此结束
Loading...