首页 > 其他分享 >springboot整合es

springboot整合es

时间:2024-09-07 14:02:47浏览次数:10  
标签:springboot springframework elasticsearch 整合 import org Elasticsearch public es

1. 引入依赖

pom.xml 中添加 Spring Boot 和 Elasticsearch 相关的依赖:

xml


复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.10.0</version>
</dependency>

2. 配置 Elasticsearch 连接

application.ymlapplication.properties 中配置 Elasticsearch 的连接信息:

yaml


复制代码
spring:
  elasticsearch:
    uris: http://localhost:9200
    username: elastic
    password: your_password

3. 创建 Elasticsearch 实体类

你可以将需要存储到 Elasticsearch 中的对象映射为一个实体类,并使用注解进行映射。例如:

java


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

@Document(indexName = "product")
public class Product {
    @Id
    private String id;
    private String name;
    private Double price;
    private String description;

    // Getters and Setters
}

4. 创建 Elasticsearch Repository

通过 Spring Data Elasticsearch,可以直接创建一个接口来操作 Elasticsearch 索引:

java


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

public interface ProductRepository extends ElasticsearchRepository<Product, String> {
    List<Product> findByName(String name);
}

5. 使用 Service 调用 Repository

创建一个服务类来使用你定义的 ProductRepository

java


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

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

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

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

6. 使用 Elasticsearch 的全文搜索功能

你还可以自定义查询方法,比如进行全文搜索或复杂查询。通过 NativeSearchQueryBuilder 构建查询条件:

java


复制代码
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Service;
import static org.elasticsearch.index.query.QueryBuilders.*;

@Service
public class ProductService {
    @Autowired
    private ElasticsearchRestTemplate elasticsearchTemplate;

    public List<Product> searchProducts(String keyword) {
        NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
                .withQuery(multiMatchQuery(keyword, "name", "description"))
                .build();

        return elasticsearchTemplate.search(searchQuery, Product.class)
                                     .getSearchHits()
                                     .stream()
                                     .map(hit -> hit.getContent())
                                     .collect(Collectors.toList());
    }
}

标签:springboot,springframework,elasticsearch,整合,import,org,Elasticsearch,public,es
From: https://www.cnblogs.com/dragon-proud-sky/p/18401626

相关文章

  • 使用docker-compose部署wordpress
    前期工作请参考我写的这篇文章docker-compose轻松部署jenkins1、创建项目目录[root@docker~]#mkdir-p/compose/wordpress2、yaml文件内容version:'3'services:mysql:image:mysql:5.7ports:-"3306:3306"environment:-"MYSQL_ROOT_......
  • springboot+vue+mybatis河北经贸大学勤工助学系统+PPT+论文+讲解+售后
    河北经贸大学勤工助学系统是学校中重要的一环,勤工助学是教师、学生获取信息的主要渠道。于是经过考虑之后决定开发基于JSP技术设计与实现了一款简洁、轻便的河北经贸大学勤工助学系统。本系统解决了考勤的主要问题,包括以下多个功能模块:学生、教师、教师考勤、岗位类型、岗位......
  • Kubernetes 简介及部署方法
    目录1Kubernetes简介及原理1.1 应用部署方式演变1.2容器编排应用1.3kubernetes简介1.4K8S的设计架构1.5K8S各组件之间的调用关系1.6K8S的常用名词感念1.7k8S的分层架构2K8S集群环境搭建2.1k8s中容器的管理方式2.2k8s中使用的几种管......
  • kubernetes 中 利用yaml文件部署应用
    目录1用yaml文件部署应用有以下优点1.1声明式配置:1.2灵活性和可扩展性:1.3与工具集成:2资源清单参数介绍2.1获得资源帮助指令explain2.2编写示例2.2.1示例1:运行简单的单个容器pod2.2.2 示例2:运行多个容器pod2.2.3示例3:理解pod间的网络整合2.2.4......
  • 基于贝叶斯算法优化回声状态网络(BO-ESN/Bayes-ESN)的数据多特征分类预测 Matlab代码+
    ......
  • SQL 自定义函数 生成网卡地址,MES开发中经常会用到的
    SQL自定义函数生成网卡地址,MES开发中经常会用到的ALTERFunction[dbo].[Fun_ReleaseMACadd]( @CurrentSeqNovarchar(6))Returnsvarchar(18)-------------------------------------------------------------------------------------------------As--------------......
  • 基于Java+SpringBoot+Mysql在线聊天系统功能设计与实现三
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展,人们的社交需求日益多样化。传统的面对面交流方式已经无法满足现代人随时随地沟通的需求。因此,开发一个高效、便捷的在线聊天系统成为了满足人们社交需求的重要途径。随着即时通讯技术的不断成熟,如WebSocket、HTTP/2等协......
  • 基于Java+SpringBoot+Mysql在线聊天系统功能设计与实现四
    一、前言介绍:1.1项目摘要随着互联网技术的飞速发展,人们的社交需求日益多样化。传统的面对面交流方式已经无法满足现代人随时随地沟通的需求。因此,开发一个高效、便捷的在线聊天系统成为了满足人们社交需求的重要途径。随着即时通讯技术的不断成熟,如WebSocket、HTTP/2等协......
  • Promise resolve reject 一直不执行会不会导致内存泄漏
    如果一个Promise一直不resolve或reject,它本身不会直接导致内存泄漏。这是因为Promise对象在其状态变为fulfilled(已解决)或rejected(已拒绝)之后就会变成不可变的状态,并且Promise本身并不会持有对大量数据的引用。然而,有几个方面需要注意:事件监听器和定时器:如果Pr......
  • Design Patterns for Cloud Native Applications
    研究背景研究问题:本书旨在解决如何构建云原生应用的问题。云原生应用具有成本节约和可扩展性的优势,但其开发和部署面临诸多挑战。研究难点:云原生应用的复杂性在于如何在动态环境中设计和开发可扩展、可靠、可管理和可观测的应用。相关工作:本书参考了现有的架构原则和实......