广告
返回顶部
首页 > 资讯 > 精选 >Springboot如何集成Elasticsearch
  • 639
分享到

Springboot如何集成Elasticsearch

2023-06-22 02:06:48 639人浏览 安东尼
摘要

小编给大家分享一下SpringBoot如何集成elasticsearch,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!集成配置步骤步骤1:加入 Maven 相关依

小编给大家分享一下SpringBoot如何集成elasticsearch,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

    集成配置步骤

    步骤1:加入 Maven 相关依赖

    <!-- 指定 springboot 版本 --><parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.5.7</version>    <relativePath/></parent> <!-- 相关jar包 --><dependencies>    <!-- SpringBoot核心jar包 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <!-- web开发包:包含TomcatspringMVC -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-WEB</artifactId>    </dependency>    <!-- ES 核心包 -->    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-data-elasticsearch</artifactId>    </dependency>    <!-- lombok 实体简化插件 -->    <dependency>        <groupId>org.projectlombok</groupId>        <artifactId>lombok</artifactId>        <optional>true</optional>    </dependency></dependencies>

    步骤2:配置 elasticsearch 的主机和端口

    elasticsearch:  host: 127.0.0.1  port: 9200

    Springboot如何集成Elasticsearch

    步骤3:配置 Elaseticsearch 客户端

    @Data@Configuration@ConfigurationProperties(prefix = "elasticsearch")public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {     private String host;    private Integer port;     @Override    public RestHighLevelClient elasticsearchClient() {        return new RestHighLevelClient(RestClient.builder(new HttpHost(host, port)));    } }

    Springboot如何集成Elasticsearch

    步骤4:创建文档实体

    @Data@Document(indexName = "users")public class User {     @Id    @Field(type = FieldType.Long)    private Long id;     @Field(type = FieldType.Text)    private String name;     @Field(type = FieldType.KeyWord)    private String sex;     @Field(type = FieldType.Integer)    private Integer age;     @Field(type = FieldType.Text)    private String address; }

    Springboot如何集成Elasticsearch

    步骤5:创建 controller,service, dao 层

    (5.1)contrller 层

    @RestController@RequestMapping("/user")public class UserController {     @Autowired    private UserService userService; }

    (5.2)service 层

    public interface UserService { }

    (5.3)service 实现层(UserDao 见 5.4)

    @Servicepublic class UserServiceImpl implements UserService {     @Autowired    private UserDao userDao; }

    (5.4)dao 层

    @Repositorypublic interface UserDao extends ElasticsearchRepository<User, Long> { }

    整个相关类创建完成后,项目结构应该如下图所示:

    Springboot如何集成Elasticsearch

    相关功能实现

    这里以实际功能举例,并列出 controller 和 service 层的实现类写法作为参考。

    主流的一些功能,ES 已经给你封装,默认给与了支持(如:示例1-6),这些相关的实现不需要我们再写 dao 层,但一些较为业务性的查询,还需要自己手动来写。

    1. 添加文档

    controller 层:

    @PostMapping("/save")public String save(@RequestBody User user) {    long id = System.currentTimeMillis();    user.setId(id);    userService.save(user);    return "新增成功,id为:" + id;}

    service 层:

    @Overridepublic Long save(User user) {    userDao.save(user);    return user.getId();}

    测试效果:

    Springboot如何集成Elasticsearch

     2. 修改文档

    【注】新增文档和修改文档操作,dao 层都是调用的 save() 方法,当 id 不存在的时候,ES(ElasticSearch)就会执行新增操作,当 id 对象已经存在的时候,就会执行修改操作。

    controller 层:

    @PostMapping("/update")public String update(@RequestBody User user) {    userService.save(user);    return "修改成功";}

    service 层:

    @Overridepublic Long save(User user) {    userDao.save(user);    return user.getId();}

    测试效果:

    Springboot如何集成Elasticsearch

     3. 根据ID查询文档

    controller 层:

    @GetMapping("/{id}")public User getById(@PathVariable("id") Long id) {    return userService.getById(id);}

    service 层:

    @Overridepublic User getById(Long id) {    Optional<User> find = userDao.findById(id);    if (find.isPresent()) {        return find.get();    }    return null;}

    测试效果:

    Springboot如何集成Elasticsearch

     4. 根据ID删除文档

    controller 层:

    @DeleteMapping("/{id}")public String deleteById(@PathVariable("id") Long id) {    userService.deleteById(id);    return "删除成功";}

    service 层:

    @Overridepublic void deleteById(Long id) {    userDao.deleteById(id);}

    测试效果:

    Springboot如何集成Elasticsearch

     5. 查询所有文档

    controller 层:

    @GetMapping("/all")public List<User> all() {    return userService.getAll();}

    service 层:

    @Overridepublic List<User> getAll() {    Iterable<User> users = userDao.findAll();    if (users == null) {        return Collections.emptyList();    }    List<User> userList = new ArrayList<User>();    users.forEach(o -> userList.add(o));    return userList;}

    测试效果:

    Springboot如何集成Elasticsearch

     6. 条件查询(单个条件)

    如:查询name包含"玛丽"的数据

    controller 层:

    @GetMapping("/listByName")public List<User> listByName(String name) {    return userService.getListByName(name);}

    service 层:

    @Overridepublic List<User> getListByName(String name) {    return userDao.findByName(name);}

    dao 层:测试效果:

    Springboot如何集成Elasticsearch

     7. 条件查询(多条件)

    如:查询 name包含"玛丽",年龄为25的数据。

    controller 层:

    @GetMapping("/listByNameAndAge")public List<User> listByNameAndAge(String name, Integer age) {    return userService.getListByNameAndAge(name, age);}

    service 层:

    @Overridepublic List<User> getListByNameAndAge(String name, Integer age) {    return userDao.findByNameAndAge(name, age);}

    dao 层:

    List<User> findByNameAndAge(String name, Integer age);

    Springboot如何集成Elasticsearch

     8. 分页查询(降序)

    controller 层:

    @GetMapping("/listOrderByAgeDesc")public List<User> listOrderByAgeDesc() {    return userService.getListOrderByAgeDesc();}

    service 层:

    @Overridepublic List<User> getListOrderByAgeDesc() {    return userDao.findByOrderByAgeDesc();}

    dao 层:

    List<User> findByOrderByAgeDesc();

    测试效果:

    Springboot如何集成Elasticsearch

     9. 分页查询(升序)

     controller 层:

    @GetMapping("/listOrderByAgeAsc")public List<User> listOrderByAgeAsc() {    return userService.getListOrderByAgeAsc();}

    service 层:

    @Overridepublic List<User> getListOrderByAgeAsc() {    return userDao.findByOrderByAgeAsc();}

    dao 层:

    List<User> findByOrderByAgeAsc();

    测试效果:

    Springboot如何集成Elasticsearch

     10. 分页查询

    controller 层:

    @GetMapping("/page")public Page<User> page(Integer pageNum, Integer pageSize) {    return userService.getPage(pageNum, pageSize);}

    service 层:

    @Overridepublic Page<User> getPage(int pageNum, int pageSize) {    // 注意,这里的pageNum是从0开始的,如果要查询第1页数据,pageNum应该为0    Pageable pageable = PageRequest.of(pageNum, pageSize);    return userDao.findAll(pageable);}

    测试效果:

    Springboot如何集成Elasticsearch

     11. 范围查询( > )

    controller 层:

    @GetMapping("/listGreaterThanAge")public List<User> listGreaterThanAge(Integer age) {    return userService.getListGreaterThanAge(age);}

    service 层:

    @Overridepublic List<User> getListGreaterThanAge(Integer age) {    return userDao.findByAgeGreaterThan(age);}

    dao 层:

    List<User> findByAgeGreaterThan(Integer age);

    测试效果:

    Springboot如何集成Elasticsearch

    12. 范围查询( >= ) 

    controller 层:

    @GetMapping("/listGreaterThanEqualAge")public List<User> listGreaterThanEqualAge(Integer age) {    return userService.getListGreaterThanEqualAge(age);}

    service 层:

    @Overridepublic List<User> getListGreaterThanEqualAge(Integer age) {    return userDao.findByAgeGreaterThanEqual(age);}

    dao 层:

    List<User> findByAgeGreaterThanEqual(Integer age);

    测试效果:

    Springboot如何集成Elasticsearch

     13. 范围查询( < )

    controller 层:

    @GetMapping("/listLessThanAge")public List<User> listLessThanAge(Integer age) {    return userService.getListLessThanAge(age);}

    service 层:

    @Overridepublic List<User> getListLessThanAge(Integer age) {    return userDao.findByAgeLessThan(age);}

    dao 层:

    List<User> findByAgeLessThan(Integer age);

    测试效果:

    Springboot如何集成Elasticsearch

     14. 范围查询( <= )

    controller 层:

    @GetMapping("/listLessThanEqualAge")public List<User> listLessThanEqualAge(Integer age) {    return userService.getListLessThanEqualAge(age);}

    service 层:

    @Overridepublic List<User> getListLessThanEqualAge(Integer age) {    return userDao.findByAgeLessThanEqual(age);}

    dao 层:

    List<User> findByAgeLessThanEqual(Integer age);

    测试效果:

    Springboot如何集成Elasticsearch

    ElasticSearch中对索引的一些常用操作

    获取Elasticsearch中所有的index:

    curl -XGET 'localhost:9200/_cat/indices?v&pretty'

    获取某索引下所有的type:

    获取elasticsearch索引下所有的type定义

    curl -XGET 'localhost:9200/elasticsearch/_mapping'

    删除索引:

    删除elasticsearch2索引

    curl -XDELETE 'localhost:9200/elasticsearch2?pretty'

    删除某索引下的某type数据:

    删除索引elasticsearch下的article类型

    curl -XDELETE 'http://localhost:9200/elasticsearch/article/'

    查看某索引的某type下所有的数据:

    查找elasticsearch索引中所有的类型为Company的数据

    http://localhost:9200/elasticsearch/Company/_search

    以上是“Springboot如何集成Elasticsearch”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

    --结束END--

    本文标题: Springboot如何集成Elasticsearch

    本文链接: https://www.lsjlt.com/news/301864.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Springboot如何集成Elasticsearch
      小编给大家分享一下Springboot如何集成Elasticsearch,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!集成配置步骤步骤1:加入 Maven 相关依...
      99+
      2023-06-22
    • SpringBoot集成 ElasticSearch
      Spring Boot 集成 ElasticSearch 对于ElasticSearch比较陌生的小伙伴可以先看看ElasticSearch的概述ElasticSearch安装、启动、操作及概念简介 好的开始啦~ 1、基础操作 1.1、导入...
      99+
      2023-08-18
      elasticsearch spring boot java maven intellij-idea
    • springboot中如何集成elasticsearch
      这篇文章主要介绍“springboot中如何集成elasticsearch”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“springboot中如何集成elasticsearch”文章能帮助大家解决问...
      99+
      2023-06-08
    • SpringBoot框架如何集成ElasticSearch
      这篇文章主要为大家展示了“SpringBoot框架如何集成ElasticSearch”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“SpringBoot框架如何集成ElasticSearch”这篇...
      99+
      2023-06-25
    • SpringBoot集成ElasticSearch的示例代码
      目录一、Elasticseach介绍1.简单介绍2.对比关系:3.详细说明:4.查出数据的解释 二、SpringBoot集成Elasticseach1.引入依赖2.添加配置...
      99+
      2022-11-13
    • SpringBoot集成elasticsearch使用图文详解
      目录前言elasticsearch简介elasticsearch使用环境安装代码演示普通查询高亮查询结束前言 此文适合了解了es相关概念以及基础知识的同学阅读 elasticsear...
      99+
      2023-05-16
      springboot集成elasticsearch springboot集成elasticsearch样例项目 springboot集成Elasticsearch
    • SpringBoot集成ElasticSearch的代码是什么
      这篇“SpringBoot集成ElasticSearch的代码是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Sprin...
      99+
      2023-06-29
    • Spring 4+ElasticSearch如何集成
      小编给大家分享一下Spring 4+ElasticSearch如何集成,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一: ElasticSearch 基本概念IN...
      99+
      2023-06-04
    • springBoot集成Elasticsearch 报错 Health check failed的解决
      springBoot集成Elasticsearch 报错 Health check failed 今天集成Elasticsearch 时启动报错 报错信息如下: 2018-11-...
      99+
      2022-11-12
    • Springboot集成Elasticsearch的步骤与相关功能
      目录集成配置步骤步骤1:加入 Maven 相关依赖步骤2:配置 elasticsearch 的主机和端口步骤3:配置 Elaseticsearch 客户端步骤4:创建文档实体步骤5:...
      99+
      2022-11-12
    • SpringBoot框架集成ElasticSearch实现过程示例详解
      目录依赖与SpringBoot集成配置类实体类测试例子RestHighLevelClient直接操作索引操作文档操作检索操作依赖 SpringBoot版本:2.4.2 <...
      99+
      2022-11-12
    • PHP与Elasticsearch的集成
      PHP与Elasticsearch的集成随着大数据和数据挖掘的发展,搜索引擎已经成为了我们生活中必不可少的工具。而Elasticsearch就是一个快速、开放、可扩展的搜索和分析引擎,它能够轻松地进行全文检索、数据分析和实时数据的存储与查询...
      99+
      2023-05-15
      集成 PHP elasticsearch
    • springboot如何集成shiro
      这篇文章主要介绍了springboot如何集成shiro,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、项目整体介绍:项目整体的结构如下图所示,项目整体采用 springb...
      99+
      2023-06-15
    • SpringBoot如何集成RabbitMQ
      这篇文章主要介绍“SpringBoot如何集成RabbitMQ”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何集成RabbitMQ”文章能帮助大家解决问题。一、RabbitMQ...
      99+
      2023-06-30
    • springboot如何集成websocket
      这篇文章主要介绍了springboot如何集成websocket,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1. 原生注解pom.xml<dependency>...
      99+
      2023-06-22
    • SpringBoot如何集成swagger
      小编给大家分享一下SpringBoot如何集成swagger,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。本文简单介绍了在项目中集成swagge...
      99+
      2023-05-30
      spring boot swagger
    • SpringBoot如何集成Swagger3
      这篇文章主要介绍SpringBoot如何集成Swagger3,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一,什么是swagger1,  Swagger 是一个规范和完整的文档框架,   ...
      99+
      2023-06-22
    • SpringBoot如何集成MaxCompute
      这篇文章主要介绍“SpringBoot如何集成MaxCompute”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot如何集成MaxCompute”文章能帮助大家解决问题。1、SDK方...
      99+
      2023-07-06
    • Elasticsearch 介绍及java集成
      一、Elasticsearch 基础介绍 ElasticSearch 是分布式实时搜索、实时分析、实时存储引擎,简称(ES), 成立于2012年,是一家来自荷兰的、开源的大数据搜索、分析服务提供商,为企业提供实时搜索、数据分析服务,支持PB...
      99+
      2023-09-23
      elasticsearch java 大数据
    • springboot如何集成spring cache
      这篇文章给大家分享的是有关springboot如何集成spring cache的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。声明式缓存Spring 定义 CacheManager 和 Cache 接口用来统一不同...
      99+
      2023-06-19
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作