首页 > 其他分享 >SpringBoot项目集成ElasticSearch服务

SpringBoot项目集成ElasticSearch服务

时间:2023-11-10 14:02:06浏览次数:40  
标签:集成 搜索 SpringBoot 查询 client Elasticsearch ElasticSearch RestHighLevelClient es



目录

  • 版本介绍
  • 背景介绍
  • 优势说明
  • 集成过程
  • 1.引入依赖
  • 2.添加配置文件
  • 3.初始化
  • 示例说明
  • 代码
  • 结果
  • 总结提升


版本介绍

  Spring boot的版本是: 2.3.12
  ElasticSearch的版本是:7.6.2

背景介绍

  在我们的项目中经常会遇到对于字符串的一些操作,例如对于字符串的分词,通过一个词去查找对应的原文(全文搜索)。那可能有人就会问了,使用mysql的模糊查询也可以根据一个词去查找对应的原文呀?是的没有问题,Elasticsearch和 MySQL 是两种不同类型的数据库,各自有不同的特点和适用场景。MySQL 适用于关系型数据存储和复杂的关系查询,适合事务性操作和数据一致性要求较高的场景。Elasticsearch 适用于大规模数据的全文搜索和分析,适合实时性要求较高的场景。下面我们来说一说项目中是如何使用和集成Elasticsearch服务的。

优势说明

Elasticsearch(简称 ES)是一种开源的分布式搜索和分析引擎,具有以下几个主要的好处:

  • 「 高性能和可扩展性 」:Elasticsearch 是分布式的,可以通过添加节点来扩展数据存储和查询能力。它使用倒排索引来加速搜索和聚合操作,具有快速的响应时间和高吞吐量。
  • 「 全文搜索和复杂查询 」:Elasticsearch 支持全文搜索和复杂的查询功能,包括模糊搜索、多字段搜索、聚合查询、地理位置查询等。它使用自己的查询语言(DSL)来构建查询,并提供了强大的查询语法和过滤器。
  • 「实时性和实时分析 」:Elasticsearch 支持实时索引和搜索,可以在数据写入后立即进行搜索和分析。它适用于实时监控、日志分析、实时搜索和实时报表等场景。
  • 「多种数据类型支持」:Elasticsearch 支持多种数据类型的存储和查询,包括文本、数字、日期、地理位置等。它可以根据不同的数据类型进行索引和分析,并提供相应的查询和聚合功能。
  • 「分布式架构和高可用性」:Elasticsearch 使用分布式架构,可以在多个节点上存储和处理数据,具有较好的水平扩展性和高可用性。它支持数据的自动分片和复制,可以在节点故障时自动恢复数据。

集成过程

1.引入依赖

<!--Elasticsearch服务-->
        <dependency>
            <groupId>org.elasticsearch.client</groupId>
            <artifactId>elasticsearch-rest-high-level-client</artifactId>
            <version>7.6.2</version>
        </dependency>

  根据安装的Elasticsearch的版本来填写version标签中的内容

2.添加配置文件

elasticsearch:
  host: localhost  填写es服务的ip地址
  port: 9200       es服务的端口号
  client:
    type: http         请求es的类型:通过http或者内部的javaAPI通信
    username: xxxx     登录es的账号
    password: xxxx     登录es的密码

  如果es服务没有设置账号和密码可以不进行账号密码配置的填写(为了安全建议添加上账号面密码)

3.初始化

一个RestHighLevelClient实例需要一个REST底层客户端构建器

@Value("${elasticsearch.host}")
    private String host;

    @Value("${elasticsearch.port}")
    private int port;

    @Value("${elasticsearch.client.type}")
    private String clientType;

    @Autowired
    private RestHighLevelClient client;

    @Bean
    public RestHighLevelClient restHighLevelClient(){
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost(host, port, clientType)));
        return client;
    }

示例说明

代码

@Autowired
    private RestHighLevelClient client;

    public void test() throws IOException {
        AnalyzeRequest analyzeRequest = AnalyzeRequest.withGlobalAnalyzer("ik_smart", "武梓龙来写CSDN博客来了");
        AnalyzeResponse analyze = client.indices().analyze(analyzeRequest, RequestOptions.DEFAULT);
        for (AnalyzeResponse.AnalyzeToken token : analyze.getTokens()) {
            System.out.println(token.getTerm());
        }
    }

  示例是将一段话进行分词操作,其中withGlobalAnalyzer方法的第一个参数是指定分词器ik_smart分词器(当然也可以使用其他分词器,根据业务的需求进行调整) 是es服务中安装了IK的插件实现的,如果不安装IK分词器的插件ik_smart分词器是无法使用的。第二个参数就是我们分词的内容了。

结果

SpringBoot项目集成ElasticSearch服务_elasticsearch

总结提升

  项目集成并使用ES服务可以提供强大的搜索和分析功能,帮助项目实现实时搜索、复杂查询和聚合分析等需求。ES具有分布式架构和高可用性,可以处理大规模数据并保证系统的可用性。同时,ES还拥有丰富的生态系统和工具支持,可以更好地集成和使用。因此,在项目中使用ES可以提升搜索和分析的效率和能力,满足项目的需求。


此文章对你有用的话记得留言+点赞+收藏哦

标签:集成,搜索,SpringBoot,查询,client,Elasticsearch,ElasticSearch,RestHighLevelClient,es
From: https://blog.51cto.com/u_16102679/8298165

相关文章

  • 博客管理系统|基于SpringBoot+Vue+ElementUI付费博客系统的设计与实现
    作者主页:编程指南针作者简介:Java领域优质创作者、博客专家、特邀作者、多年架构师设计经验、腾讯课堂常驻讲师主要内容:Java项目、毕业设计、简历模板、学习资料、面试题库、技术互助收藏点赞不迷路 关注作者有好处项目编号:BS-PT-089二,环境介绍语言环境:Java: jdk1.8数据库:Mysql......
  • 多模块springboot项目打jar包 没有主清单属性
    说明:一个多模块的项目 两个子Module 一个core 一个server。java8的环境 |--XChome(pom.xmlxchome的 父级)--|--xc-core(pom.xmlxc-core的子级)--|--xc-server(pom.xmlxc-server的子级) xc-core:主要定义一些常量类、工具类、业务部分(controllerservice......
  • 基于SSM+SpringBoot影院在线预订系统开发与设计(附源码资料)
    文章目录1.项目简介2.项目运行截图2.1.电影网站首页2.2.电影列表2.3.反馈与意见2.4.电影详情2.5.电影预订2.6.会员登录2.7.会员注册2.8.管理员后台首页2.9.用户管理2.10.电影管理2.11.房间管理2.12.房间管理2.13.黑名单管理2.14.用户反馈管理2.15.预约管理3.源码获取1.项目简介该......
  • SpringBoot复习:(57)ServletRequestListener
    packagecn.edu.tju.confiig;importorg.springframework.context.annotation.Configuration;importjavax.servlet.ServletRequestEvent;importjavax.servlet.ServletRequestListener;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServlet......
  • ElasticSearch-集成ik分词器
    目录背景介绍版本选择优势说明集成过程1.下载安装包2.解压安装包3.重启ElasticSearch服务3.1通过ps-ef|grepelastic查看正在启动的es进程号3.2使用kill-9xxx杀死进程3.3使用./elasticsearch启动es服务分词测试细粒度分词方式分词请求分词结果粗粒度分词方式分词请求分词......
  • SpringBoot部署的jar包瘦身
    pom文件打包插件更换参考连接:https://www.jb51.net/program/293676eog.htm参考连接:https://blog.csdn.net/meng_9543/article/details/121329834<build><finalName>xxx-xxx</finalName><plugins><plugin>......
  • springboot学习日记(一)
    今天连下数据库,不小心打成netstartmysql了,好糗。。以后等时机到了笔记也该换成markdown写了,好久没写md后面得复习下。然后idea这边连数据库很简单不用写专门的程序,右侧栏database直接可以点开具体到连接某个数据库。记录一下注解的原理和作用:以前,『XML』是各大框架的青睐者,它......
  • Springboot报错,java.lang.IllegalArgumentException: argument type mismatch
    1、报错信息java.lang.IllegalArgumentException:argumenttypemismatch atsun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethod) atsun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) atsun.reflect.DelegatingMethodAccessorI......
  • 模拟集成电路设计系列博客——3.4.2 稳压器反馈分析
    3.4.2稳压器反馈分析上一小节中介绍的稳压器的开环分析与基本源极跟随器很相似,假定使用一个跨导为\(G_{ma}\),输出阻抗为\(R_{oa}\)的单级放大器,环路在放大器的输入处断开并是呀一个测试信号\(v_{t}\),可以得到如下图所示的小信号等效电路。稳压器负载通过小信号电阻\(R_L\)建模,并......
  • SpringCloud 集成 Sentinel 和使用小结
    Sentinel是阿里的一款微服务请求监控组件,能够通过配置实现流量控制,降级熔断,热点参数限流,授权规则限流,使用非常方便。官方默认只提供了流量控制配置规则持久化代码实现,这也是我们最常用的,上篇博客已经实现并进行了部署。本篇博客基于上篇博客搭建好的Sentinel和Nacos环境,介绍......