1. 🏆 全文检索
1.1. 版本约定
https://docs.spring.io/spring-data/elasticsearch/reference/elasticsearch/versions.html
1.2. 环境安装
采用docker环境配置
1.2.1. es7版本(springboot2)
安装Elasticsearch
docker run -e TZ=Asia/Shanghai -e ES_JAVA_OPTS="-Xms1g -Xmx1g" -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name es \
--privileged=true elasticsearch:7.9.0
[!tip] 建议这里通过网络固定好
ip
,具体参考 docker网络
安装IK分词器
进入Elasticsearch容器
elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.0/elasticsearch-analysis-ik-7.9.0.zip
[!tip] 这里可能由于网络原因,失败多重复执行几次,直到安装成功。 安装后需要重启es服务才生效
安装kibana
可视化管理es容器
docker run -d --name es-kibana -e “I18N_LOCALE=zh-CN” --link=es:elasticsearch -p 5601:5601 kibana:7.9.0
访问地址:http://ip:5601/app/dev_tools#/console
[!tip]请使用7.9.0版本,es版本不同差异比较大,版本不兼容会导致es功能无法正常使用;如果7.9.0版本不行,可以尝试使用7.17.23版本
1.2.2. es8版本(springboot3)
安装Elasticsearch版本
docker pull docker.1ms.run/elasticsearch:8.15.5
docker run -d \
--name es8 \
--privileged=true \
-p 9200:9200 \
-p 9300:9300 \
-e TZ=Asia/Shanghai \
-e ES_JAVA_OPTS="-Xms1g -Xmx1g" \
-e "discovery.type=single-node" \
docker.1ms.run/elasticsearch:8.15.5
[!tip]请使用8.15.5版本,es版本不同差异比较大,版本不兼容会导致es功能无法正常使用;
安装IK分词器
进入Elasticsearch容器
elasticsearch-plugin install https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.15.5.zip
[!tip] 这里可能由于网络原因,失败多重复执行几次,直到安装成功。 安装后需要重启es服务才生效
安全证书
由于es8默认开启了安全验证,配置安全证书参考es官方文档
本地测试功能可以先把安全关闭(下图的security相关改为false)后重启es服务,直接通过http://ip:9200 能看到es信息说明已关闭安全
1.3. 开发配置
1.3.1. 依赖
依赖ms-elasticsearch的方式
方式1、将ms-elasticsearch打包成jar, 同步到本地的maven库;
<dependency>
<groupId>net.mingsoft</groupId>
<artifactId>ms-elasticsearch</artifactId>
</dependency>
方式2、直接将ms-elasticsearch源代码复制到项目中;
1.3.2. application.yml
必须先安装环境,ip根据实际情况编写
# es索引名称配置,多个项目使用同一es服务时,请区分设置各项目的索引名称
ms:
elasticsearch:
index-name: cms-gov
# ES服务器链接
spring:
elasticsearch:
uris: [ localhost:9200 ]
data:
elasticsearch:
repositories:
enabled: true
1.4. es各搜索简介
1.4.1. 联想搜索:返回与输入结果相近的词条集合
前缀匹配联想
可实现类似百度搜索的提示词功能
关键字匹配
类似下图的效果,高亮且不局限于前缀匹配
[!tip]一般可以用在用户搜索输入的时候,类似百度的搜索框,自动补全用户可能想输入的词条或以下拉列表显示
1.4.2. 通用搜索、高亮搜索
正常搜索文章使用通用或高亮搜索,返回文章详细信息,两个接口之间没有本质区别;搜索时会自动检测是否有站群环境
高亮前缀如:"<span style='color=red'>",高亮后缀如:"</span>"
搜索功能基本相同,高亮搜索会额外聚合关键字文章在栏目下的数量,具体参考聚合结果
1.4.3. 热词搜索
返回词条搜索频率及词条,可指定范围时间内返回词条个数;热词会随用户搜索自动统计增长,不需要人为干预
1.4.4. 聚合搜索
根据字段词条分组展示,以相同词条为一组展示同词条的个数和词条内容
如下图,统计各栏目下的文章数量