目录
一、项目前准备
1、了解什么是ElasticSearch
2、配置docker环境
3、安装ElasticSearch镜像
3.1 dockerHub上安装
4、安装kibana镜像
5、安装ik分词器
6、安装拼音分词器
7、编写对应数据库的索引
二、JAVA代码的配置。
1、导入依赖
2、添加数据到创建好的文档里
2.1 配置es客户端的bean 添加到主启动类里面
2.2 批量导入文件到es里面
3、编写查询语句
4、测试结果
注:在进行之前、小编默认你有一些es的基础能力,可以简单编写DSL语句
Elasticsearch是一个开源的分布式搜索和分析引擎,它是建立在Apache Lucene搜索引擎库之上的。Elasticsearch提供了一个RESTful API,用于实时地存储、搜索和分析大量数据。它被广泛用于构建实时搜索、日志分析、应用程序性能监控等各种用例中。
Elasticsearch具有以下特点:
- 分布式架构:可以轻松地扩展到多个节点,实现高可用性和水平扩展。
- 实时搜索:支持实时索引和搜索,能够快速地处理大量数据。
- 多种数据类型支持:除了全文搜索外,还支持结构化数据、地理空间数据等多种数据类型的搜索和分析。
- 强大的聚合功能:能够进行复杂的数据聚合和分析操作。
- 插件生态系统:有丰富的插件和工具可用于扩展和定制Elasticsearch的功能。
总的来说,Elasticsearch是一个功能强大、灵活且易于扩展的搜索和分析引擎,适用于各种大规模数据处理和搜索场景。例如京东、淘宝、百度、携程等大型软件都是采用这门技术。
在我有一篇文章里提到了如何安装docker 地址:关于docker-compose在linux上的集群部署_linux使用compose部署-CSDN博客
3.1 dockerHub上安装
这里自己选择版本 把代码放到linux上面运行就OK 就拉去好镜像了
这里我们采用elasticsearch的7.12.1版本的镜像,这个镜像体积非常大,接近1G。建议大家和我的保持一致
运行ElasticSearch
官网上是有文档教程的 大家可以去看:
因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
我这里直接写了
同上步骤 这里不用多解释
启动方式:
可以看到两个镜像均是拉去下来了
接下来执行以上命令便可以跑起来了。
在浏览器输入你的虚拟机ip+端口 例如 我的es是:
kibana是:
点击devops就可以进入dsl语句书写界面了。
可以在github上去下载 也可用提供的资料 资料放在末尾 官网 https://github.com/infinilabs/analysis-ik
同上:官网:
https://github.com/infinilabs/analysis-pinyin
将下载好的压缩包 解压放到es目录下
-v es-plugins:/usr/share/elasticsearch/plugins 就在刚刚启动挂载的容器卷下。
如果急记不得 输入以下指令
就会显现容器卷的 然后查找它所在的位置即可
7.1数据库表的字段
建立的索引为:
执行
出现这样便是创建成功:自己可以添加点数据测试一下 这里就大家自己去测试吧!
默认创建好项目
注意:因为spring项目依赖里默认有es的 所以需要把版本修改了
版本和自己pull的版本一定要对应 一定要对应、一定要对应,重要的是说三遍!!!
2.1 配置es客户端的bean 添加到主启动类里面
2.2 批量导入文件到es里面
这里需要再字段里面定义suggestion属性 做自动补全的字段。
例如:
这里用mybatis去查询 以及查询就不多说了
去控制台查询一下结果
共有八百多条数据 并且也有suggestion字段
自动补全的代码 接受一个key的参数 字符串类型
service层的代码为:
可以看到是可以自动补全词条的这里
在测试根据搜索结果高亮显示
可以看到搜索的关键词也是被<em>标签包裹着的 到时后只需要给标签设置颜色即可。