SpringBoot集成常用第三方框架-ES

这篇具有很好参考价值的文章主要介绍了SpringBoot集成常用第三方框架-ES。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者主页:编程指南针

作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师

主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库、技术互助

收藏点赞不迷路  关注作者有好处

文末获取源码 

一、ElasticSearch 概述

1.1 什么是ElasticSearch

Elasticsearch简称为es是一个开源的分布式RESTful 风格的搜索和数据分析引擎,它的底层是开源库Apache Lucene。  Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库——无论是开源还是私有,但它也仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理,因为Lucene 非常复杂。  为了解决Lucene使用时的繁复性,于是Elasticsearch便应运而生。它使用 Java 编写,内部采用 Lucene 做索引与搜索,但是它的目标是使全文检索变得更简单,简单来说,就是对Lucene 做了一层封装,它提供了一套简单一致的 RESTful API 来帮助我们实现存储和检索。  当然,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确地形容:

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索;

  • 一个分布式实时分析搜索引擎;

  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

1.2 ElasticSearch发展历史

多年前,一个叫做Shay Banon的刚结婚不久的失业开发者,由于妻子要去伦敦学习厨师,他便跟着也去

了。在他找工作的过程中,为了给妻子构建一个食谱的搜索引擎,他开始构建一个早期版本的Lucene。

直接基于Lucene工作会比较困难,所以Shay开始抽象Lucene代码以便Java程序员可以在应用中添加搜

索功能。他发布了他的第一个开源项目,叫做“Compass”。

后来Shay找到一份工作,这份工作处在高性能和内存数据网格的分布式环境中,因此高性能的、实时

的、分布式的搜索引擎也是理所当然需要的。然后他决定重写Compass库使其成为一个独立的服务叫做

Elasticsearch。

第一个公开版本出现在2010年2月,在那之后Elasticsearch已经成为Github上最受欢迎的项目之一,代

码贡献者超过300人。一家主营Elasticsearch的公司就此成立,他们一边提供商业支持一边开发新功

能,不过Elasticsearch将永远开源且对所有人可用。

1.3 ElasticSearch和solr的区别

1.3.1 Elasticsearch

Elasticsearch是一个实时分布式搜索和分析引擎。它让你以前所未有的速度处理大数据成为可能。

它用于全文搜索、结构化搜索、分析以及将这三者混合使用:

维基百科使用Elasticsearch提供全文搜索并高亮关键字,以及输入实时搜索(search-asyou-type)和搜索

纠错(did-you-mean)等搜索建议功能。

英国卫报使用Elasticsearch结合用户日志和社交网络数据提供给他们的编辑以实时的反馈,以便及时了

解公众对新发表的文章的回应。

StackOverflflow结合全文搜索与地理位置查询,以及more-like-this功能来找到相关的问题和答案。

Github使用Elasticsearch检索1300亿行的代码。

但是Elasticsearch不仅用于大型企业,它还让像DataDog以及Klout这样的创业公司将最初的想法变成可扩展的解决方案。Elasticsearch可以在你的笔记本上运行,也可以在数以百计的服务器上处理PB级别的数据 。

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。

1.3.2 Solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化Solr可以独立运行,运行在Jetty、Tomcat等这些Servlet容器中,Solr 索引的实现方法很简单,用 POST方法向 Solr 服务器发送一个描述 Field 及其内容的 XML 文档,Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送 HTTP GET 请求,然后对 Solr 返回Xml、json等格式的查询结果进行解析,组织页面布局。Solr不提供构建UI的功能,Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。

solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene。

Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。

二、ElasticSearch 集成SpringBoot

官方参考:Getting started | Java REST Client [7.16] | Elastic

2.1 创建SpringBoot工程

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

2.2 SpringBoot配置ES

添加es依赖

<properties>
    <java.version>8</java.version>
    <elasticsearch.version>7.6.1</elasticsearch.version>
</properties>
​
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.6.1</version>
</dependency>

在SpringBoot中创建ESConfig类,并注入到spring容器中

@Configuration
public class ESConfig {
    @Bean
    public RestHighLevelClient restHighLevelClient() throws UnknownHostException {
​
        return new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("192.168.6.145",9200,"http")));
​
    }
}

三、Spring Data Elasticsearch

3.1 Spring Data 框架介绍

Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持map-reduce框架和云计算数据服务。 Spring Data可以极大的简化JPA(Elasticsearch…)的写法,可以在几乎不用写实现的情况下,实现对数据的访问和操作。除了CRUD外,还包括如分页、排序等一些常用的功能。

Spring Data的官网:Spring Data

常用模块

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

3.2 Spring Data Elasticsearch

Spring Data Elasticsearch 基于 spring data API 简化 Elasticsearch操作,将原始操作Elasticsearch的客户端API 进行封装 。Spring Data为Elasticsearch项目提供集成搜索引擎。Spring Data Elasticsearch POJO的关键功能区域为中心的模型与Elastichsearch交互文档和轻松地编写一个存储索引库数据访问层。

3.3 Spring Data Elasticsearch版本

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

springboot2.3.x版本可以兼容elasticsearch7.x版本。

3.4 Spring Data Elasticsearch框架集成

3.4.1 导入依赖

<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.3.6.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
    </dependency>
</dependencies>

3.4.2 yml配置

spring:
  elasticsearch:
    rest:
      uris: http://localhost:9200

3.4.3 document映射

@Data
@Document(indexName = "goods")
public class Goods implements Serializable {
​
    @Field(type = FieldType.Keyword)
    private String id;
    @Field(type = FieldType.Text)
    private String goodsName;
    @Field(type = FieldType.Integer)
    private Integer store;
    @Field(type = FieldType.Double)
    private double price;
​
}

3.4.4 dao数据访问

@Repository
public interface GoodsDao extends ElasticsearchRepository<Goods, String> {
}

3.4.5 springboot启动类

package com.atguigu;
​
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
public class Application {
​
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

3.4.6 接口测试

 @Autowired
    private GoodsDao goodsDao;
​
    /**
     * 添加文档
     * */
    @Test
    public void saveTest(){
        Goods goods = new Goods();
        goods.setId("1");
        goods.setGoodsName("华为手机");
        goods.setStore(100);
        goods.setPrice(5000);
        goodsDao.save(goods);
        System.out.println("添加成功...");
    }
​
    /**
     * 根据ID查询文档
     * */
    @Test
    public void findById(){
        Goods goods = goodsDao.findById("1").get();
        System.out.println(goods);
    }

四,相关作品展示

基于Java开发、Python开发、PHP开发、C#开发等相关语言开发的实战项目

基于Nodejs、Vue等前端技术开发的前端实战项目

基于微信小程序和安卓APP应用开发的相关作品

基于51单片机等嵌入式物联网开发应用

基于各类算法实现的AI智能应用

基于大数据实现的各类数据管理和推荐系统

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

 SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端

 SpringBoot集成常用第三方框架-ES,环境搭建,spring boot,elasticsearch,后端文章来源地址https://www.toymoban.com/news/detail-771094.html

到了这里,关于SpringBoot集成常用第三方框架-ES的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RK3568平台 TinyAlsa集成第三方音频算法

    ALSA(Advanced Linux Sound Architecture)是一个开源项目,涵盖了用户空间和内核空间对音频设备的操作接口,通过应用层使用alsalib可以实现对音频设备的控制         TinyAlsa是android推出的一个精简的ALSA库,当然alsa-driver这块没有改动         alsa包含:1、内核 alsa-driver 2.用户空间

    2024年01月23日
    浏览(51)
  • Android Pdf第三方框架

    导入AndroidPdfViewer 在 repositories 里面添加库 布局文件引用PDFView PdfViewer 为我们提供了以下几种读取文件的方法: Configurator 主要方法 PDFView 其他方法 github地址: https://github.com/barteksc/AndroidPdfViewer 导入mupdf 在 repositories 里面添加库 mupdf提供了解析代码, Document 读取pdf文件, Androi

    2024年02月13日
    浏览(65)
  • Flutter:第三方常用库整理

    随着Flutter的不断学习,接触了不少第三方的库。因此打算进行简单的整理。 简介 一个强大的Dart/FlutterHTTP客户端,支持全局配置, 拦截器、表单数据、请求取消、文件上传/下载、 超时和自定义适配器等。 官方地址 https://pub-web.flutter-io.cn/packages/dio 简单使用 flutter:网络请求

    2024年02月16日
    浏览(43)
  • Java常用第三方工具类

    一、Apache StringUtils:专为Java字符串而生的工具类 首先引入依赖: 1.字符串判空 isEmpty: 判断null和\\\"\\\" isNotEmpty:判断null和\\\"\\\" isBlank:判断null和\\\"\\\"和\\\" \\\" isNotBlank:判断null和\\\"\\\"和\\\" \\\" 示例代码如下: 执行结果: 2.分割字符串 使用StringUtils的split()方法分割字符串成数组。 示例代码如下:

    2024年02月08日
    浏览(67)
  • Swift常用的第三方库

    以下是一些常用的Swift第三方库及其链接: Alamofire:用于网络请求的库。https://github.com/Alamofire/Alamofire Kingfisher:用于异步下载和缓存图片的库。https://github.com/onevcat/Kingfisher SwiftyJSON:用于处理JSON数据的库。https://github.com/SwiftyJSON/SwiftyJSON Realm:一个移动数据库。https://github.

    2024年04月28日
    浏览(38)
  • JMeter进阶-常用第三方插件讲解

    准备工作: 1.最新版本的JMeter是默认不展示插件管理器的,所以我们需要手动添加插件管理器 2.下载地址:https://jmeter-plugins.org/install/Install/,下载插件plugins-manager.jar,然后将jar包放在apache-jmeter-x.x.xlibext路径下,重新打开jmeter客户端即可在“选项”下面可以看到了Plugins-Ma

    2023年04月08日
    浏览(44)
  • 吐血整理!Python常用第三方库,码住!!!

    Python作为一种编程语言近年来越来越受欢迎,它为什么这么火? 其中一个重要原因就是因为Python的库丰富——Python语言提供超过15万个第三方库,Python库之间广泛联系、逐层封装。几乎覆盖信息技术所有领域,下面简单介绍下数据分析与可视化、网络爬虫、自动化、WEB开发、

    2024年02月11日
    浏览(45)
  • Springboot整合第三方登录

    Springboot整合第三方登录 为什么采用第三方登录 ​ 采用第三方登录可以避免重新注册账号的繁琐,也不需要再为密码和昵称发愁,而第三方登录有一个比较好用的包,里面整合了多种第三方登录,开箱即用,非常方便。就是JustAuth,网址https://www.justauth.cn/。 整合第三方登录

    2024年02月09日
    浏览(43)
  • Xcode通过Add package自动集成第三方SDK问题汇总

    问题1:  解决方法:这个问题可能是因为 Adjust 或者 Facebook 的库当中依赖的某些类库的仓库地址是 git:// 协议,通过这种协议与 GitHub 通讯时会使用到你的 SSH 配置,你电脑上相关的 ssh key 使用了 GitHub 不再支持的格式,请参考提示中的网址重新生成相关的 SSH key:https://githu

    2024年02月13日
    浏览(49)
  • Spring xml 方式整合mybatis 第三方框架

    MyBatis提供了mybatis-spring.jar专门用于两大框架的整合。 ①:第一步: 导入MyBatis整合Spring的相关坐标; ②:第二步: 编写Mapper和Mapper.xml ③:第三步: 配置SqlSessionFactoryBean和MapperScannerConfigurer ④:第四步: 编写测试代码

    2024年02月13日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包