springboot集成es详解
qq_43381763 人气:01.导入 maven依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-dataelasticsearch</artifactId> <dependency>
注意 保持版本一致 我用的是7.6.2版本的
<properties> <java.version>1.8</java.version> <elasticsearch.version>7.6.2</elasticsearch.version> <!--自定义版本 保持版本一致--> </properties>
2.编写config类 相当于 xlm导入文档
@Configuration public class ESConfig { @Bean public RestHighLevelClient restHighLevelClient (){ RestHighLevelClient restHighLevelClient = new RestHighLevelClient( RestClient.builder( new HttpHost("localhost",9100,"http") ) ); return restHighLevelClient; }
注意这里的端口号 一定不能搞错
3测试书写 添加 索引
@Test void contextLoads() throws IOException { //1.创建索引的请求 CreateIndexRequest createIndexRequest = new CreateIndexRequest("mao"); //2.执行请求 获得响应 CreateIndexResponse createIndexResponse = estHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT); System.out.println(createIndexResponse); }
4.查询索引是否存在
@Test //查询索引是否存在 void existIndex() throws IOException { GetIndexRequest getIndexRequest = new GetIndexRequest("test"); //获得索引请求 boolean exists = estHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT); System.out.println(exists); }
5.删除索引
@Test//删除 void delIndex() throws IOException { DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test"); AcknowledgedResponse delete = estHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT); System.out.println(delete); System.out.println(delete.isAcknowledged()); }
6.添加文档数据 第一 要设置实体类 导入阿里巴巴JSON 工具类
@Data @Accessors(chain = true) //实体类 public class User { private String name; private String age; }
@Test //添加文档 void addDocument() throws IOException { //创建对象啊 User user = new User().setAge("13").setName("mao"); //创建请求 IndexRequest request = new IndexRequest("mao"); //设置规则 PUT /test/_doc/id request.id("1"); request.timeout("1s"); //将请求放入josn request.source(JSON.toJSONString(user),XContentType.JSON); //客户端发送请求 IndexResponse index = estHighLevelClient.index(request, RequestOptions.DEFAULT); //获取响应结果 System.out.println(index.toString()); System.out.println(index.status());
<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
7.修改文档
@Test //Update 文档操作 void GengXin() throws IOException { UpdateRequest updateRequest = new UpdateRequest("mao","1"); //请求更新文档 updateRequest.timeout("1s"); //设置超时时间 User user= new User().setName("张三").setAge("26"); updateRequest.doc(JSON.toJSONString(user),XContentType.JSON); //将对象封装丢进去 XContentType方法 将要传输的数据进行告知 UpdateResponse update = estHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);//发送请求 System.out.println(update); }
8.批量增加
@Test //批量丢入数据 void TestBulkIndexRequest() throws IOException { BulkRequest bulkRequest = new BulkRequest(); //大批量导入数据 本质是for循环 bulkRequest.timeout("10s"); ArrayList<User> users = new ArrayList<>(); for(int i=0;i<10;i++){ users.add(new User().setName("张三"+i+"号").setAge(""+i)); } //批处理请求 for(int i =0;i<users.size();i++){ bulkRequest.add( new IndexRequest("mao") .id(""+(i+1)) .source(JSON.toJSONString(users.get(i)),XContentType.JSON) ); } BulkResponse bulk = estHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(bulk); System.out.println(bulk.hasFailures());//查询是否失败 }
9.精确查询
@Test//查询 void testSearch() throws IOException { SearchRequest searchRequest = new SearchRequest(ESConstant.ESConstant); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); //精确查询条件 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "0"); //查询所有 // MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery(); searchSourceBuilder.query(termQueryBuilder) ;//将规则加入 // searchSourceBuilder.from(); //设置分页 // searchSourceBuilder.size(); searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));//设置高并发下的延迟时间 searchSourceBuilder.highlighter(); searchRequest.source(searchSourceBuilder);//将刚刚做的请求体放入 SearchResponse search = estHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);//请求信息 System.out.println(JSON.toJSONString(search.getHits()));//返回查询情况 getHits 封装返回对象 for( SearchHit SearchHit:search.getHits().getHits() ){ System.out.println(SearchHit.getSourceAsMap()); } }
加载全部内容