springboot 整合es

Spring Boot可以轻松地与Elasticsearch进行整合,以实现高效的搜索和分析功能。

以下是如何在Spring Boot应用程序中使用Elasticsearch的步骤:

1.添加依赖项

pom.xml文件中添加以下依赖项:

复制代码
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>

2.配置Elasticsearch

在Spring Boot应用程序的配置文件application.properties中添加以下配置:

复制代码
spring.data.elasticsearch.cluster-name=elasticsearch
spring.data.elasticsearch.cluster-nodes=localhost:9300

这里假设您正在运行Elasticsearch节点,该节点位于本地主机上的端口9300。

3.创建Elasticsearch存储库

创建一个包含所有必需方法的Elasticsearch存储库接口。例如:

复制代码
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface ProductRepository extends ElasticsearchRepository<Product, Long> {
}

4.定义数据模型

定义与Elasticsearch文档相对应的数据模型。例如,以下是一个名为"Product"的类:

复制代码
import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "products", type = "product")
public class Product {
   @Id
   private String id;
   private String name;
   private String description;
   private double price;
   // getters and setters
}

5.使用存储库

在Spring Boot应用程序的服务层中使用存储库进行搜索和保存数据。例如:

复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class ProductService {
   @Autowired
   private ProductRepository productRepository;

   public Iterable<Product> searchByName(String name) {
      return productRepository.findByName(name);
   }

   public void save(Product product) {
      productRepository.save(product);
   }
}

6.测试您的应用程序

您现在可以启动您的Spring Boot应用程序并测试它是否可以与Elasticsearch集成。例如,您可以像以下方式搜索产品:

复制代码
@Autowired
private ProductService productService;

@GetMapping("/search")
public List<Product> search(@RequestParam String name) {
   Iterable<Product> products = productService.searchByName(name);
   List<Product> productList = new ArrayList<>();
   products.forEach(productList::add);
   return productList;
}

此外,您还可以使用Elasticsearch的REST API测试您的应用程序。例如,您可以通过以下方式创建一个名为"Product"的索引:

复制代码
PUT /products
{
   "settings": {
      "number_of_shards": 1
   },
   "mappings": {
      "product": {
         "properties": {
            "name": {
               "type": "text"
            },
            "description": {
               "type": "text"
            },
            "price": {
               "type": "double"
            }
         }
      }
   }
}

然后,您可以向"Product"索引添加文档:

复制代码
POST /products/product
{
   "name": "iPhone X",
   "description": "Apple iPhone",
   "price": 999.99
}
相关推荐
摇滚侠6 小时前
《SpringBoot 3:入门与应用实战》第 2 章 IOC 思想与实现 阅读笔记 1
spring boot·笔记·后端
ChaHae-In7 小时前
SpringBoot统一功能处理
java·spring boot·后端
AI大模型-小雄10 小时前
Codex写分页接口为什么越翻越慢?用Cursor Pagination解决重复与漏数据
大数据·数据库·elasticsearch·搜索引擎·chatgpt·后端开发·codex
Elasticsearch11 小时前
深入浅出 Elastic 工作流(Workflows):核心架构与十一大顶级字段详解
elasticsearch
今天的砖头有点烫手啊14 小时前
接口太慢?Spring Boot 缓存体系 @Cacheable 全链路拆解
spring boot·后端·缓存
Elasticsearch14 小时前
在 Elasticsearch 中构建上下文:AI Indices 如何使用更少的 tokens 为更智能的 agent 提供支持
elasticsearch
zzzll111116 小时前
Spring Boot 入门指南:从零开始构建微服务
spring boot·后端·微服务
用户31268748772016 小时前
你的定时任务真的靠谱吗?Spring Boot @Scheduled 全链路拆解
spring boot
你住过的屋檐17 小时前
【Java】Argon2实现密码加密以及在springboot中使用教程
java·开发语言·spring boot·安全
程序员天天困17 小时前
Spring Boot i18n 国际化实战:从资源文件到多语言接口完整指南
spring boot·后端·编程语言