【无标题】

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);
    }
}
相关推荐
生万千欢喜心2 小时前
linux 安装 Elasticsearch Kibana
linux·elasticsearch·jenkins
Java后端的Ai之路2 小时前
SSH配置与GitHub项目拉取操作指南
elasticsearch·ssh·github·公钥
qq_452396234 小时前
【工程实战】第九篇:持续集成 —— Jenkins 与 GitLab CI:构建无人值守的自动化流水线
ci/cd·gitlab·jenkins
野木香4 小时前
linux安装常用服务(不含jenkins)
linux·运维·jenkins
南棱笑笑生7 小时前
20260420给万象奥科的开发板HD-RK3576-PI适配瑞芯微原厂的Buildroot时调通AP6256并实测网速109Mbits/sec
大数据·elasticsearch·搜索引擎·rockchip
Elastic 中国社区官方博客12 小时前
Elasticsearch:使用 Agent Builder 的 A2A 实现 - 开发者的圣诞颂歌
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
历程里程碑13 小时前
2. Git版本回退全攻略:轻松掌握代码时光机
大数据·c++·git·elasticsearch·搜索引擎·github·全文检索
饭后一颗花生米17 小时前
Git冷命令拯救崩溃现场
大数据·elasticsearch·搜索引擎
pride.li1 天前
Git 笔记:将一段旧历史压缩成一个提交
大数据·elasticsearch·搜索引擎