SpringBoot整合Elasticsearch7.2.0的实现方法

下面我将给出SpringBoot整合Elasticsearch7.2.0的实现方法的完整攻略,具体流程如下:

一、引入依赖

首先,在pom.xml文件中引入以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.2.0</version>
</dependency>

其中,第一个依赖是SpringBoot整合Elasticsearch的必要依赖,第二个依赖是Elasticsearch的Java高级客户端依赖。

二、配置Elasticsearch

application.properties文件中配置Elasticsearch信息:

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

通过以上配置,告诉SpringBoot要连接的Elasticsearch实例的地址为http://localhost:9200

三、编写数据实体类

为了方便后续对Elasticsearch进行操作,我们需要先定义数据实体类。例如,定义一个Book类:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = "book", type = "_doc")
public class Book {
    @Id
    private String id;
    private String name;
    private String author;
    private Double price;
    private LocalDate publishDate;
}

注解说明:

  • @Document:用于标识对应实体类在Elasticsearch中的索引和类型。本例中,索引名为book,类型为_doc
  • @Id:用于标识对应实体类在Elasticsearch中的唯一标识属性。
  • @Data:使用Lombok插件自动生成getter、setter、toString等方法。
  • @NoArgsConstructor@AllArgsConstructor:无参构造方法和全参构造方法。

四、实现对Elasticsearch的操作

(1)创建索引

@Autowired
private RestHighLevelClient client;

public void createIndex() throws IOException {
    CreateIndexRequest request = new CreateIndexRequest("book");
    CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
    boolean acknowledged = response.isAcknowledged();
    boolean shardsAcknowledged = response.isShardsAcknowledged();
    if (acknowledged && shardsAcknowledged) {
        log.info("创建索引成功");
    }
}

该方法通过使用RestHighLevelClient对象的indices().create()方法创建Elasticsearch索引。其中,CreateIndexRequest对象传入要创建的索引名,CreateIndexResponse对象接收响应结果。如果响应结果中acknowledgedshardsAcknowledged属性都为true,则表示创建成功。

(2)删除索引

public void deleteIndex() throws IOException {
    DeleteIndexRequest request = new DeleteIndexRequest("book");
    AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT);
    if (response.isAcknowledged()) {
        log.info("删除索引成功");
    }
}

该方法通过使用RestHighLevelClient对象的indices().delete()方法删除Elasticsearch索引。其中,DeleteIndexRequest对象传入要删除的索引名,AcknowledgedResponse对象接收响应结果。如果响应结果中acknowledged属性为true,则表示删除成功。

(3)添加数据

public void insert(Book book) throws IOException {
    IndexRequest request = new IndexRequest("book", "_doc", book.getId())
        .source(new ObjectMapper().writeValueAsString(book), XContentType.JSON);
    IndexResponse response = client.index(request, RequestOptions.DEFAULT);
    RestStatus status = response.status();
    if (status == RestStatus.CREATED) {
        log.info("添加数据成功");
    }
}

该方法通过使用RestHighLevelClient对象的index()方法向Elasticsearch索引中添加数据。其中,IndexRequest对象传入要添加的索引名、索引类型、唯一标识属性值和要添加的文档的JSON格式字符串,IndexResponse对象接收响应结果。如果响应结果中的status属性是CREATED,则表示添加数据成功。

(4)修改数据

public void update(Book book) throws IOException {
    UpdateRequest request = new UpdateRequest("book", "_doc", book.getId())
        .doc(new ObjectMapper().writeValueAsString(book), XContentType.JSON);
    UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
    RestStatus status = response.status();
    if (status == RestStatus.OK) {
        log.info("修改数据成功");
    }
}

该方法通过使用RestHighLevelClient对象的update()方法向Elasticsearch索引中修改数据。其中,UpdateRequest对象传入要修改的索引名、索引类型、唯一标识属性值和要修改的文档的JSON格式字符串,UpdateResponse对象接收响应结果。如果响应结果中的status属性是OK,则表示修改数据成功。

(5)删除数据

public void delete(String id) throws IOException {
    DeleteRequest request = new DeleteRequest("book", "_doc", id);
    DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
    RestStatus status = response.status();
    if (status == RestStatus.OK) {
        log.info("删除数据成功");
    }
}

该方法通过使用RestHighLevelClient对象的delete()方法从Elasticsearch索引中删除数据。其中,DeleteRequest对象传入要删除的索引名、索引类型和唯一标识属性值,DeleteResponse对象接收响应结果。如果响应结果中的status属性是OK,则表示删除数据成功。

五、示例

下面分别介绍创建索引和添加数据的示例。

(1)创建索引示例

@SpringBootTest
@RunWith(SpringRunner.class)
public class BookTest {

    @Autowired
    private BookService bookService;

    @Test
    public void testCreateIndex() throws Exception {
        bookService.createIndex();
    }

}

该示例中,通过在测试类中注入BookService对象,调用其createIndex()方法创建索引。

(2)添加数据示例

@SpringBootTest
@RunWith(SpringRunner.class)
public class BookTest {

    @Autowired
    private BookService bookService;

    @Test
    public void testInsert() throws Exception {
        Book book = new Book("1", "SpringBoot从入门到精通", "张三", 99.9, LocalDate.now());
        bookService.insert(book);
    }

}

该示例中,通过在测试类中注入BookService对象,调用其insert()方法向索引中添加一条数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot整合Elasticsearch7.2.0的实现方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java的Struts框架报错“ActionMappingException”的原因与解决办法

    当使用Java的Struts框架时,可能会遇到“InvalidTokenException”错误。这个错误通常由以下原因之一起: 令牌无效:如果令牌无,则可能会出现此错误。在这种情况下,需要检查令牌是否有效以解决此问题。 配置错误:如果配置文件中正确配置,则可能会现此错误。在这种情况下,检查文件以解决此问题。 以下是两个实例: 例 1 如果令牌无效,则可以尝…

    Java 2023年5月5日
    00
  • Java执行shell命令的实现

    Java可以通过运行shell命令来与操作系统进行交互,可以使用以下三种方式来执行shell命令: Runtime类 ProcessBuilder类 Process类 Runtime类 Java中有一个常量对象Runtime代表着当前Java应用程序的运行环境,可以使用Runtime类中的exec()方法在程序中执行shell命令。 import java.…

    Java 2023年5月26日
    00
  • MyBatis还是JPA?终于有答案了

    我们来详细讲解“MyBatis还是JPA?终于有答案了”的完整攻略。 1. 背景介绍 在进行Java Web开发时,ORM框架是不可或缺的工具之一,其可以将Java对象映射到关系型数据库中。MyBatis和JPA是流行的ORM框架,那么如何选择呢? 2. MyBatis和JPA区别 2.1 MyBatis MyBatis是基于SQL语句的ORM框架,其与关系…

    Java 2023年5月19日
    00
  • 深入jetty的使用详解

    深入jetty的使用详解 Jetty是一个Java Web服务器和Servlet容器,可以用于开发、测试和部署Java Web应用程序。它提供了高性能、异步IO和低内存占用等优点。下面是深入Jetty的使用详解: 安装Jetty Jetty的官方网站提供了下载链接,下载对应版本的zip文件,解压后即可得到Jetty的安装包。然后在命令行中进入Jetty的bi…

    Java 2023年5月20日
    00
  • java代码规范review异常事故记录

    下面是“Java代码规范Review异常事故记录”攻略的详细解释: 1. 异常事故记录的意义 我们编写的代码中难免会有缺陷,尤其是在团队协同开发中,每个人编写风格和习惯可能都不一样,导致代码可读性和可维护性存在问题。为了解决这些问题,我们需要对代码进行review,发现问题并及时修复。而异常事故记录则是review的重要内容之一。它可以让我们对程序中的异常情…

    Java 2023年5月27日
    00
  • Java中获取文件大小的详解及实例代码

    下面是关于“Java中获取文件大小的详解及实例代码”的完整攻略: 一、获取文件大小的方法 Java中获取文件大小的方法,可以使用Java File类的length()方法,该方法返回文件的字节数,即文件大小。关于File类的length()方法详见Java文档:https://docs.oracle.com/javase/8/docs/api/java/io…

    Java 2023年5月20日
    00
  • Java Object类和包装类深入解读

    Java Object类和包装类深入解读 Java中的所有类继承自Object类,这使得Object类成为Java中最基础的类之一。此外,Java中还包含了8个基本数据类型,这些基本数据类型都有其对应的包装类,用来对基本类型进行装箱操作,使其具备对象的特征。本文将深入探讨Java中Object类和包装类的相关知识点和用法。 Object类 什么是Object…

    Java 2023年5月26日
    00
  • 在linux上建jsp環境

    下面是在Linux上建立JSP环境的完整攻略。 准备工作 在开始建立JSP环境之前,需要确保你的Linux系统中已经安装了Java环境,可以使用以下命令检查Java环境是否已经安装: java -version 如果返回JAVA版本信息,则说明Java已经正确安装。 安装Apache Tomcat 接下来,我们需要安装Apache Tomcat。Tomcat…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部