com.alibaba fastjson 1.2.75 org.springframework.boot spring-boot-starter-data-elasticsearch
- package com.lrs.config;
-
- import org.apache.http.HttpHost;
- import org.elasticsearch.client.RestClient;
- import org.elasticsearch.client.RestHighLevelClient;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.Configuration;
-
- /**
- * @作者:刘壬杉
- * @创建时间 2022/8/16 16:30
- **/
- @Configuration
- public class EsConfig {
- @Bean
- public RestHighLevelClient restHighLevelClient(){
- RestHighLevelClient restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200,"http")));
- return restHighLevelClient;
- }
- }
首先 在测试类中引入RestHighLevelClient对象
- @Resource
- private RestHighLevelClient client;
其次 准备一个User对象
- package com.lrs.entity;
-
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- /**
- * @作者:刘壬杉
- * @创建时间 2022/8/16 19:21
- **/
- @Data
- @AllArgsConstructor
- @NoArgsConstructor
- public class User {
- private String id;
- private String name;
- private String address;
- private Integer age;
-
- public User(String name, String address, Integer age) {
- this.name = name;
- this.address = address;
- this.age = age;
- }
- }
- //创建索引
- @Test
- void testCreateIndex() throws IOException {
- CreateIndexRequest createIndexRequest = new CreateIndexRequest("test04");
- CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest, RequestOptions.DEFAULT);
- System.out.println(createIndexResponse.isAcknowledged());
- }
运行结果:创建成功返回true
- //删除索引
- @Test
- void testDeleteIndex() throws Exception{
- DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("test04");
- AcknowledgedResponse delete = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
- System.out.println(delete.isAcknowledged());
- }
运行结果:删除成功返回true
- //判断索引是否存在
- @Test
- void testExistsIndex() throws Exception{
- GetIndexRequest getIndexRequest = new GetIndexRequest("test04");
- boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
- System.out.println(exists);
- }
运行结果:存在返回true,不存在返回false.
- //添加文档
- @Test
- void testCreateDoc() throws Exception{
- IndexRequest indexRequest = new IndexRequest("test04");
- indexRequest.id("1");
- indexRequest.source(JSON.toJSONString(new User("张三","北京",25)), XContentType.JSON);
- IndexResponse index = client.index(indexRequest, RequestOptions.DEFAULT);
- System.out.println(index.getResult());
- }
运行结果:添加成功返回 CREATED
- //查询文档 -- id
- @Test
- void testGetDoc() throws Exception{
- GetRequest getRequest = new GetRequest("test04");
- getRequest.id("1");
- GetResponse documentFields = client.get(getRequest, RequestOptions.DEFAULT);
- System.out.println(documentFields.getSourceAsMap());
- }
运行结果:
- //判断文档是否存在
- @Test
- void testExistsDoc() throws Exception{
- GetRequest getRequest = new GetRequest("test04");
- getRequest.id("1");
- boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
- System.out.println(exists);
- }
运行结果:存在返回true,不存在返回false.
- //删除文档
- @Test
- void testDeleteDoc() throws Exception{
- DeleteRequest deleteRequest = new DeleteRequest("test04");
- deleteRequest.id("1");
- DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
- System.out.println(delete.getResult());
- }
运行结果:删除成功返回 DELETED
- //修改文档
- @Test
- void testUpdateDoc() throws Exception{
- UpdateRequest updateRequest = new UpdateRequest("test04","1");
- User user = new User();
- user.setName("王五");
- updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
- UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
- System.out.println(update.getResult());
- }
运行结果:修改成功返回 UPDATED
- //批量添加文档
- @Test
- void testBulk() throws Exception{
- BulkRequest bulkRequest = new BulkRequest("test04");
- List
list = new ArrayList<>(); - list.add(new User("1","张三1","北京1",18));
- list.add(new User("2","张三2","北京2",19));
- list.add(new User("3","张三3","北京3",20));
- list.add(new User("4","张三4","北京4",21));
- list.add(new User("5","张三5","北京5",22));
- list.stream().forEach(item->bulkRequest.add(new IndexRequest().id(item.getId()).source(JSON.toJSONString(item),XContentType.JSON)));
- BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
- System.out.println(bulk.hasFailures());
- }
运行结果: bulk.hasFailures():判断是否有故障,返回false代表没有故障,添加成功
复杂查询中包含一个条件对象,条件对象里包含了很多条件,比如 分页,高亮,排序,查询指定列,精准匹配,范围查询等等
- //复杂查询
- @Test
- void testSearch() throws Exception{
- SearchRequest searchRequest = new SearchRequest("test04");
- //创建条件对象
- SearchSourceBuilder builder = new SearchSourceBuilder();
- //bool
- BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery().should(QueryBuilders.matchQuery("name", "3"))
- .should(QueryBuilders.matchQuery("age", 20));
- builder.query(boolQueryBuilder);
- //分页
- builder.from(0);
- builder.size(2);
- //指定列
- String[] includes = {"name","address"};
- String[] excludes = {"id"};
- builder.fetchSource(includes,null);
- //高亮
- HighlightBuilder highlightBuilder = new HighlightBuilder();
- highlightBuilder.field("name");
- highlightBuilder.preTags("");
- highlightBuilder.postTags("");
- builder.highlighter(highlightBuilder);
- //排序
- builder.sort("age", SortOrder.ASC);
- searchRequest.source(builder);
- SearchResponse search = client.search(searchRequest, RequestOptions.DEFAULT);
- SearchHit[] hits = search.getHits().getHits();
- Arrays.stream(hits).forEach(item-> System.out.println(item.getSourceAsMap()));
- Arrays.stream(hits).forEach(item-> System.out.println(item.getHighlightFields()));
- }
运行结果: