创建java工程访问elasticsearch
导入pom
点击查看代码
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.5.6</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.fch</groupId> <artifactId>myelasticsearch</artifactId> <version>0.0.1-SNAPSHOT</version> <name>myelasticsearch</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- mysql:MyBatis相关依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <!-- mysql:mysql驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- mysql:阿里巴巴数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.12</version> </dependency> <!--Elasticsearch相关依赖--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <!--支持自定义es方法--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--低于提示版本--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.6</version> </plugin> </plugins> </build> </project>
配置yml
点击查看代码
server: port: 8080 spring: application: #应用名称 name: service-sms #数据库连接配置 datasource: #配置当前使用的数据源的操作类型 type: com.alibaba.druid.pool.DruidDataSource #配置MySQL的驱动程序类 driver-class-name: com.mysql.cj.jdbc.Driver #数据库连接地址 url: jdbc:mysql://xxxxxx:3306/esdb?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai #数据库连接用户名 username: root #数据库连接密码 password: 1111 #进行数据库连接池的配置 dbcp2: #初始化提供的连接数 initial-size: 5 #数据库连接池的最小维持连接数 min-idle: 5 #最大的连接数 max-total: 5 #等待连接获取的最大超时时间 max-wait-millis: 200 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false data: elasticsearch: repositories: enabled: true elasticsearch: rest: uris: http://xxxxx:9200 mybatis: mapper-locations: - classpath:mapper/*.xml
RestClientConfig
点击查看代码
package com.fch.myelasticsearch.config; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; @Configuration public class RestClientConfig extends AbstractElasticsearchConfiguration { @Override @Bean public RestHighLevelClient elasticsearchClient() { final ClientConfiguration clientConfiguration = ClientConfiguration.builder() .connectedTo("xxxxx:9200") .build(); return RestClients.create(clientConfiguration).rest(); } }
EsController
点击查看代码
package com.fch.myelasticsearch.controller; import com.alibaba.druid.support.json.JSONUtils; import com.fch.myelasticsearch.dao.ElastRepository; import com.fch.myelasticsearch.dao.EsDao; import com.fch.myelasticsearch.entity.EsProduct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import java.util.List; import java.util.Optional; @Controller public class EsController { @Autowired private EsDao esDao; @Autowired private ElastRepository elastRepository; @RequestMapping("/test") @ResponseBody public String start(){ List<EsProduct> all = esDao.getAll(); System.out.println(all); for(EsProduct esProduct:all){ System.out.println("esProduct:"+esProduct); elastRepository.save(esProduct); } return "ok"; } @RequestMapping("/test1") @ResponseBody public String start1(){ List<EsProduct> zhangsan = elastRepository.findByName("name0"); System.out.println(zhangsan); return "ok1"; } @RequestMapping("/test2") @ResponseBody public String start2(){ elastRepository.deleteById("1"); return "ok2"; } }
EsProduct
点击查看代码
package com.fch.myelasticsearch.entity; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; import java.io.Serializable; @Document(indexName = "myuser",shards = 1,replicas = 0) public class EsProduct implements Serializable{ private static final long serialVersionUID = -1L; @Id private Integer id; @Field(type = FieldType.Text) private String name; @Field(type = FieldType.Text) private String sex; @Field(type = FieldType.Text) private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "EsProduct{" + "id=" + id + ", name='" + name + '\'' + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }
ElastRepository,导入jpa实现像sql一样的查询
点击查看代码
package com.fch.myelasticsearch.dao; import com.fch.myelasticsearch.entity.EsProduct; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import java.util.List; public interface ElastRepository extends ElasticsearchRepository<EsProduct,String> { //1.根据姓名查询 List<EsProduct> findByName(String name); // // //2.根据年龄查询 // List<EsProduct> findByAge(Integer age); // // //3.根据姓名和年龄查询 // List<EsProduct> findByUserNameAndAge(String userName,Integer age); // // //4.根据姓名或年龄查询 // List<EsProduct> findByUserNameOrAge(String userName,Integer age); // // //5.查询年龄大于等于25 // List<EsProduct> findByAgeGreaterThanEqual(Integer age); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律