【无标题】

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);
    }
}
相关推荐
Elasticsearch14 小时前
Elasticsearch Reindex 现已支持跨节点自动迁移:无需人工干预,不会丢失进度
elasticsearch
星辰_mya17 小时前
数据同步的几种姿势
大数据·elasticsearch·搜索引擎
曾阿伦18 小时前
Elasticsearch Analyzer 分析器开发指南
大数据·elasticsearch·搜索引擎
Elastic 中国社区官方博客20 小时前
使用 Jina CLIP v2 和 Elasticsearch 实现多语言图片搜索
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·jina
醉颜凉20 小时前
Elasticsearch 核心数据结构:FST 原理与应用场景全解析
数据结构·elasticsearch·jenkins
garmin Chen21 小时前
Elasticsearch(4):Java Rest Client 搜索与聚合速查
java·分布式·elasticsearch
Plastic garden21 小时前
docker compose elfk
运维·docker·jenkins
独隅21 小时前
Git Submodule深度避坑指南
大数据·git·elasticsearch
终端行者1 天前
企业级 Jenkins Pipeline 实战Docker构建前端+Ansible发布
前端·ci/cd·docker·jenkins
遇见火星1 天前
Jenkins + Ansible 集成实战:把配置管理焊进流水线里
运维·ansible·jenkins