SpringBoot整合ElasticSearch
-
项目结构
-
导包
<!--映入springBoot父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.3.RELEASE</version> </parent> <dependencies> <!--导入ES的包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency> <!--导入Web包--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> </dependencies>
-
编写一个ES的配置类
@Configuration public class ESConfig { @Bean public RestHighLevelClient restHighLevelClient(){ //ES的 ip 端口 协议(固定) RestClientBuilder http = RestClient.builder(new HttpHost("192.168.93.144", 9200, "http")); RestHighLevelClient restHighLevelClient=new RestHighLevelClient(http); return restHighLevelClient; } }
-
编写一个索引映射类(我这里就是User类)
//indexName 就是索引的名字 @Document(indexName = "cn") public class User { @Id //表示这个id作为ES 文档的id @Field(index = false,type = FieldType.Integer) private Integer id; @Field(index = false,type = FieldType.Keyword) private String name; @Field(index = false,type = FieldType.Integer) private Integer age; @Field(index = true,type = FieldType.Text,analyzer = "ik_max_word") private String search; }
-
创建一个dao接口(这个接口就是用来操作ES中文档的增删改查)
//ElasticsearchRepository<索引类名,主键类型的数据类型> public interface ESMapper extends ElasticsearchRepository<User,Integer> { }
-
Service层
@Service public class ESServiceImp implements ESService { //注入ESMapper @Autowired private ESMapper esMapper; //添加文档 @Override public void addEs() { User user = new User(); user.setName("wsl"); user.setAge(18); user.setSearch("我爱中国"); user.setId(1); User save = esMapper.save(user); System.out.println(save); } //删除文档 @Override public void deleteEs() { //根据id删除 esMapper.deleteById(1); } }
-
Controller测试
@RequestMapping("/es") @RestController public class EsTestController { //注入service @Autowired private ESService esService; @RequestMapping("/add") @ResponseBody public String add(){ esService.addEs(); return "OK"; } //删除 @RequestMapping("/delete") @ResponseBody public String delete(){ esService.deleteEs(); return "OK"; } }
-
编写启动类
@SpringBootApplication public class ESApplication { public static void main(String[] args) { SpringApplication.run(ESApplication.class,args); } }