【无标题】

Springboot和elasticsearch的查询

注意点: 版本问题

1.springboot和jdk版本及elasticsearch的版本需要配套使用

springboot: 2.7.13

jdk8

elasticsearch: 7.17.18

获取SpringBoot版本
java 复制代码
public class Test {
    public static void main(String[] args) {
        System.out.println("Spring Boot 版本: " + SpringBootVersion.getVersion());
    }
}

1.windows下载安装elasticsearch

  1. 下载地址: https://www.elastic.co/downloads/past-releases/elasticsearch-7-17-18
  2. 解压到指定位置
  3. 启动命令
cmd 复制代码
# 进入 bin 目录
cd C:\elasticsearch\elasticsearch-8.12.0\bin
# 启动
.\elasticsearch.bat
  1. 浏览器输入: http://localhost:9200/
  2. 成功响应:
json 复制代码
{
  "name" : "LUCKLI",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "GQNDlW0-QsyIi9VjSSPnRg",
  "version" : {
    "number" : "7.17.18",
    "build_flavor" : "default",
    "build_type" : "zip",
    "build_hash" : "8682172c2130b9a411b1bd5ff37c9792367de6b0",
    "build_date" : "2024-02-02T12:04:59.691750271Z",
    "build_snapshot" : false,
    "lucene_version" : "8.11.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

2. Spring Boot配置

1.配置文件

Spring Boot 配置本地 Elasticsearch

application.yml / application.properties

yaml 复制代码
spring:
  elasticsearch:
    uris: http://localhost:9200
    # 如果 Elasticsearch 8.x 开启了安全认证,需要配置用户名密码
    # username: elastic
    # password: 你的密码
2.pom文件
xml 复制代码
 <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-elasticsearch</artifactId>
 </dependency>

3.编写测试类

1. 创建实体类
java 复制代码
 import org.springframework.data.annotation.Id;
import org.springframework.data.elasticsearch.annotations.Document;

@Document(indexName = "user")  // ES 索引名
public class User {
    
    @Id
    private String id;
    private String name;
    private Integer age;
    
    // 构造方法、getter、setter
    public User() {}
    
    public User(String id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    
    public String getId() { return id; }
    public void setId(String id) { this.id = id; }
    
    public String getName() { return name; }
    public void setName(String name) { this.name = name; }
    
    public Integer getAge() { return age; }
    public void setAge(Integer age) { this.age = age; }
    
    @Override
    public String toString() {
        return "User{id='" + id + "', name='" + name + "', age=" + age + "}";
    }
}
2. 创建 Repository
java 复制代码
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;

public interface UserRepository extends ElasticsearchRepository<User, String> {
    // 按名称查询
    List<User> findByName(String name);
}
3. 创建测试 Controller
java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/test")
public class TestController {

    @Autowired
    private UserRepository userRepository;

    // 添加数据
    @PostMapping("/add")
    public String add(@RequestParam String id, 
                      @RequestParam String name, 
                      @RequestParam Integer age) {
        User user = new User(id, name, age);
        userRepository.save(user);
        return "保存成功: " + user;
    }

    // 查询所有
    @GetMapping("/list")
    public Iterable<User> list() {
        return userRepository.findAll();
    }

    // 按名称查询
    @GetMapping("/find")
    public List<User> findByName(@RequestParam String name) {
        return userRepository.findByName(name);
    }

    // 删除
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable String id) {
        userRepository.deleteById(id);
        return "删除成功: " + id;
    }
}
4. 单元测试
java 复制代码
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
public class EsTest {

    @Autowired
    private UserRepository userRepository;

    @Test
    public void testSave() {
        User user = new User("1", "李四", 30);
        userRepository.save(user);
        System.out.println("保存成功");
    }

    @Test
    public void testFind() {
        Iterable<User> list = userRepository.findAll();
        list.forEach(System.out::println);
    }
}
相关推荐
摇滚侠11 小时前
Java 项目教程《尚庭公寓》标签管理、自定义 converter 14 - 18
java·elasticsearch·架构
honder试试13 小时前
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
windows·elasticsearch·jenkins
牛奶咖啡1313 小时前
CI/CD——在jenkins中使用pipeline方式自动化构建java项目jpress
ci/cd·自动化·jenkins·pipeline是什么·pipeline有啥用·pipeline适用场景·pipeline使用示例
Elastic 中国社区官方博客14 小时前
Elasticsearch:为 AI Agent builder 创建 skill plugin
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
薪火铺子15 小时前
ElasticSearch 集群原理与分片管理深度解析
大数据·elasticsearch·搜索引擎
zz07232015 小时前
Elasticsearch
大数据·elasticsearch·搜索引擎
薪火铺子15 小时前
ElasticSearch 聚合查询与性能优化实战
大数据·elasticsearch·性能优化
Flittly16 小时前
【日常小问】解决 Jenkins 部署 Spring Cloud 微服务到 Docker 容器启动失败的问题
运维·笔记·docker·微服务·jenkins
Elastic 中国社区官方博客17 小时前
将 Logstash Pipeline 从 Azure Event Hubs 迁移到 OTel Collector Kafka Receiver
大数据·数据库·人工智能·分布式·elasticsearch·搜索引擎·kafka
Elastic 中国社区官方博客17 小时前
使用 Elasticsearch 与 Kibana 中的 PromQL 调查 Kubernetes 基础设施问题
大数据·数据库·elasticsearch·搜索引擎·信息可视化·kubernetes·全文检索