Springboot中利用Elasticsearch(摆设+利用+解说 最完备)

[复制链接]
发表于 2025-10-31 05:08:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
目次
弁言
一、docker中安装Elasticsearch
1、创建es专有的网络
2、开放端口
3、在es-net网络上安装es和kibana
4、大概出现的标题
5、测试
6、安装IK分词器
7、测试IK分词器
二、连合业务实战
1、准备依赖
2、设置yml
3、读取yml设置
4、准备es设置类
5、编写测试代码
6、利用mq异步修改es的表数据
7、实现搜刮功能
三、简单先容Elasticsearch
1、表结构与Mysql的对比
2、Mapping映射属性
3、索引库的CRUD
创建索引库和映射( * ):
查询索引库:
修改索引库:
删除索引库:
4、文档操纵的CRUD
新增文档:
查询文档:
删除文档:
修改文档:
批处理处罚:
四、RestAPI
1、初始化RestClient
(1)引入es的RestHighLevelClient依赖
(2)初始化RestHighLevelClient
2、在kibana的客户端准备创建索引库
3、Java客户端创建索引库
五、RestClient操纵文档(重在方法明确)
1、准备实体类
2、Java实现CRUD(重点)
(1)增:
(2)删:
(3)改:
(4)查:
留意:
3、批量导入文档:
六、JavaRestClient查询
根本步调(重点)
1、叶子查询
2、复合查询
3、排序和分页
4、高亮
七、数据聚合
<hr> 弁言

   Elasticsearch:用于数据存储、盘算和搜刮
  
      
  • Mysql:善于事件范例操纵,可以确保数据的安全和同等性
      
  • Elasticsearch:善于海量数据的搜刮、分析、盘算

   基于这个特点我计划改造用户方面的功能,基于用户量比力多,大概到达一万以上以致更多,须要对用户举行搜刮大概各种操纵,我信任es也比力恰当。
  在这篇文章前面是实战,反面是具体解说,对于某些方法可以在反面解说中对应查找来利用
  一、docker中安装Elasticsearch

先说下令,反面再说大概会出现的标题。
1、创建es专有的网络

由于测试须要摆设kibana容器作为一个图形化界面,创建一个网络方便让es和kibana容器互联。
  1. docker network create es-net
复制代码
2、开放端口

宝塔:

腾讯云:

  1. 5601
  2. 9200
  3. 9300
复制代码
3、在es-net网络上安装es和kibana

这里我安装7.12.1版本的es和kibana,由于之前学习有现有的镜像包安装更快
分别实行这两条指令:
  1. docker run -d
复制代码
–name es
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”
-e “discovery.type=single-node”
-v es-data:/usr/share/elasticsearch/data
-v es-plugins:/usr/share/elasticsearch/plugins
–privileged
–network es-net
-p 9200:9200
-p 9300:9300
elasticsearch:7.12.1
  1. docker run -d
复制代码
–name kibana
-e ELASTICSEARCH_HOSTS=http://es:9200
–network=es-net
-p 5601:5601
kibana:7.12.1
4、大概出现的标题

这里我是在宝塔上摆设的,由于我之前创建容器的时间没有开启防火墙的端口,应该先去开启防火墙再去安装docker容器,我这些流程出现肴杂,导致出现下面这些类似的报错:
  1. 设置失败!500 Server Error for http+docker://localhost/v1.45/containers/1e013
  2. Error response from daemon: Failed to Setup IP tables:
  3. Unable to enable SKIP DNAT rule:
  4. (iptables failed: iptables --wait -t nat -I DOCKER -i br-b649822bbcff -j RETURN: iptables:
  5. No chain/target/match by that name. (exit status 1))
复制代码
办理办法是先去开放端口然后重启docker服务再去安装es和kibana
重启docker:
  1. systemctl restart docker
复制代码
然后再去重新安装就行
可以参考:【DockerCE】运行Docker的服务器报“Failed to Setup IP tables“的办理方法_error response from daemon: failed to setup ip tab-CSDN博客
5、测试

es:
服务器ip:9200

kibana:
服务器ip:5601
选择Explore on my own之后,进入主页面:

测试安装乐成!
检察docker:

大概利用指令:
  1. docker ps
复制代码
记着kibana是用于你开发的时间测试利用,比力方便的图形化界面,现实开发也只是用es。
6、安装IK分词器

  1. docker exec -it es ./bin/elasticsearch-plugin  install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip
复制代码
重启es容器使其收效:
  1. docker restart es
复制代码
7、测试IK分词器

   IK分词器包罗两种模式:
  
       
  • ik_smart:智能语义切分
       
  • ik_max_word:最细粒度切分
      
  进入Dev tools:

先测试Elasticsearch官方提供的标准分词器:
  1. POST /_analyze
  2. {
  3.   "analyzer": "standard",
  4.   "text": "在CSDN学习java太棒了"
  5. }
复制代码

测试IK分词器:
  1. POST /_analyze
  2. {
  3.   "analyzer": "ik_smart",
  4.   "text": "在CSDN学习java太棒了"
  5. }
复制代码

测试乐成,安装分词器乐成!
二、连合业务实战

一样平常利用easy-es比力多,下面是基于原生es的操纵,假如想看easy-es可以参考我照片博客:
SpringBoot中easy-es入门实战(连合官方文档版)-CSDN博客文章欣赏阅读386次,点赞10次,收藏15次。本文重要是参考官方文档举行编写,记载一下本身一些比力常利用easy-es利用方法和内容,实在他的利用和MybatisPlus差不多的,之前我还写了一些关于es的博客可以参考一下:Springboot中利用Elasticsearch(摆设+利用+解说 最完备)_spring boot elasticsearch-CSDN博客最完备最具体的springboot中利用es,在前面有服务器摆设es相干的东西,在反面有利用java的实战,对于实战的方法利用连合官网深度去研究和解说。[这里是图片009]https://blog.csdn.net/qq_73440769/article/details/144790200?spm=1001.2014.3001.5501
原理:当mysql数据发生改变时发送消息到mq,es服务吸取消息,举行更新
es操纵步调:
  1. 1.创建Request
  2. 2.准备请求参数
  3. 3.聚合参数
  4. 4.发送请求
  5. 5.解析聚合结果
  6.     5.1.获取聚合
  7.     5.2.获取聚合中的桶
  8.     5.3.遍历桶内数据
复制代码
1、准备依赖

  1.     <properties>
  2.         <elasticsearch.version>7.12.1</elasticsearch.version>
  3.     </properties>
  4.     <dependencyManagement>
  5.         <dependencies>
  6.             <dependency>
  7.                 <groupId>org.elasticsearch.client</groupId>
  8.                 <artifactId>elasticsearch-rest-high-level-client</artifactId>
  9.                 <version>${elasticsearch.version}</version>
  10.             </dependency>
  11.         </dependencies>
  12.     </dependencyManagement>
复制代码
2、设置yml

  1. quick:
  2.   elasticsearch:
  3.     host: ${quick.elasticsearch.host} # 服务器IP地址
  4.     port: ${quick.elasticsearch.port} # 服务器端口号
复制代码
3、读取yml设置


  1. import lombok.Data;
  2. import org.springframework.boot.context.properties.ConfigurationProperties;
  3. import org.springframework.stereotype.Component;
  4. /*
  5. * @读取yml配置
  6. */
  7. @Component
  8. @Data
  9. @ConfigurationProperties(prefix = "quick.elasticsearch")
  10. public class ElasticSearchProperties {
  11.     // es地址
  12.     private String host;
  13.     // es端口
  14.     private int port;
  15. }
复制代码
4、准备es设置类


  1. import com.quick.properties.ElasticSearchProperties;
  2. import org.apache.http.HttpHost;
  3. import org.elasticsearch.client.RestClient;
  4. import org.elasticsearch.client.RestHighLevelClient;
  5. import org.springframework.boot.autoconfigure.condition.C
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表