返回

用代码讲故事——Springboot集成ElasticSearch快速入门demo

后端

ElasticSearch:与Springboot整合实现强大搜索

简介

在信息爆炸的时代,搜索引擎已成为我们不可或缺的工具。ElasticSearch是一款强大的分布式搜索引擎,因其全文检索能力、灵活的扩展性和高可用性而备受推崇。本文将详细介绍如何将ElasticSearch与Springboot整合,并通过代码示例演示其强大的搜索功能。

Springboot集成ElasticSearch

1. 引入依赖

在Springboot项目中,通过引入Springboot Starter依赖即可集成ElasticSearch。

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
  <version>2.4.5</version>
</dependency>

2. 配置ElasticSearch

在application.properties文件中,配置ElasticSearch的连接信息。

# ElasticSearch主机地址
spring.elasticsearch.rest.uris=http://localhost:9200

# ElasticSearch集群名称
spring.elasticsearch.cluster-name=elasticsearch

# ElasticSearch节点名称
spring.elasticsearch.node.name=node-1

3. 创建实体类

创建实体类映射ElasticSearch中的文档,继承ElasticsearchRepository接口并使用@Document注解指定索引和类型。

@Document(indexName = "product", type = "_doc")
public class Product {

  @Id
  private Long id;

  private String name;

  private Double price;

  // 省略其他字段
}

4. 使用ElasticSearch

Spring Data ElasticSearch提供丰富的API,用于索引、查询和删除操作。

(1)索引文档

Product product = new Product();
product.setId(1L);
product.setName("iPhone 13");
product.setPrice(9999.0);

elasticsearchRepository.save(product);

(2)查询文档

List<Product> products = elasticsearchRepository.findByName("iPhone");

(3)删除文档

elasticsearchRepository.deleteById(1L);

ElasticSearch的扩展性和高可用性

1. 扩展性

ElasticSearch可以轻松扩展,只需添加或删除节点即可。新节点会自动加入集群,并重新分片数据以确保均衡分布。

2. 高可用性

ElasticSearch使用副本机制保证数据的冗余。当主节点宕机时,副本节点会自动接管,确保搜索服务的可用性。

常见问题解答

  1. ElasticSearch有哪些优势?

    • 分布式和可扩展
    • 全文检索能力
    • 高可用性和冗余
    • 丰富的API
  2. 如何与Springboot集成ElasticSearch?

    • 引入Springboot Starter依赖
    • 配置ElasticSearch连接信息
    • 创建实体类并映射文档
  3. 如何索引文档到ElasticSearch?

    • 使用elasticsearchRepository.save()方法
  4. 如何查询ElasticSearch中的文档?

    • 使用elasticsearchRepository.findByName()等方法
  5. 如何删除ElasticSearch中的文档?

    • 使用elasticsearchRepository.deleteById()方法