官方文档 首先我们查看官方文档
https://www.elastic.co/guide/index.html 
这里我们选择其他版本。选择7.6
我们一般使用高级的客户端
1 2 3 4 5 <dependency >     <groupId > org.elasticsearch.client</groupId >      <artifactId > elasticsearch-rest-high-level-client</artifactId >      <version > 7.6.2</version >  </dependency > 
环境搭建 创建一个SpringBoot项目
所以我们要修改版本与我们的对应
编写配置类
1 2 3 4 5 6 7 8 9 10 11 @Configuration public  class  ElasticSearchClientConfig      @Bean      public  RestHighLevelClient restHighLevelClient ()           RestHighLevelClient client = new  RestHighLevelClient(                 RestClient.builder(                         new  HttpHost("localhost" , 9200 , "http" )));         return  client;     } } 
索引API 创建索引 CreateIndexRequest request = new CreateIndexRequest("索引名");
client.indices().create(request, RequestOptions.DEFAULT);
create()创建
1 2 3 4 5 6 7 8 9 10 @Test void  testCreateIndex ()  throws  IOException          CreateIndexRequest request = new  CreateIndexRequest("kylin_index" );          CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);     System.out.println(createIndexResponse); } 
获取索引 new GetIndexRequest("索引名");
client.indices().exists(request, RequestOptions.DEFAULT);
exists()判断是否存在返回boolean
1 2 3 4 5 6 7 @Test void  testExistIndex ()  throws  IOException     GetIndexRequest request = new  GetIndexRequest("kylin_index" );     boolean  exists = client.indices().exists(request, RequestOptions.DEFAULT);     System.out.println(exists); } 
删除索引 new DeleteIndexRequest("索引名");
client.indices().delete(request, RequestOptions.DEFAULT);
delete()删除索引方法返回一个AcknowledgedResponse对象通过isAcknowledged()判断是否被删除。
1 2 3 4 5 6 7 @Test void  testDeleteIndex ()  throws  IOException     DeleteIndexRequest request = new  DeleteIndexRequest("kylin_index" );     AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);     System.out.println(delete.isAcknowledged()); } 
文档API 当前所有的索引全都被删除。
创建一个User对象
1 2 3 4 5 6 7 @Data @AllArgsConstructor @NoArgsConstructor public  class  User      private  String name;     private  int  age; } 
导入fastjson
1 2 3 4 5 <dependency >    <groupId > com.alibaba</groupId >     <artifactId > fastjson</artifactId >     <version > 1.2.62</version >  </dependency > 
添加文档 
XContentType.JSON表示传送的是Json数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 @Test void  testAddDocument ()  throws  IOException          User user = new  User("kylin" , 3 );          IndexRequest request = new  IndexRequest("kylin_index" );          request.id("1" );     request.timeout("1s" );          request.source(JSON.toJSONString(user), XContentType.JSON);          IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);     System.out.println(indexResponse.toString());     System.out.println(indexResponse.status()); } 
获取文档 判断该文档是否存在
_source就是下面这个数据,不获取。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 @Test void  testIsExists ()  throws  IOException     GetRequest getRequest = new  GetRequest("kylin_index" , "1" );          getRequest.fetchSourceContext(new  FetchSourceContext(false ));          getRequest.storedFields("_none" );     boolean  exists = client.exists(getRequest, RequestOptions.DEFAULT);     System.out.println(exists); } 
获取文档信息
getSourceAsString()获取_source中的内容以String类型
更新文档 
1 2 3 4 5 6 7 8 9 10 11 12 13 @Test void  testUpdateRequest ()  throws  IOException     UpdateRequest updateRequest = new  UpdateRequest("kylin_index" , "1" );     updateRequest.timeout("1s" );     User user = new  User("Kylin" , 18 );     updateRequest.doc(JSON.toJSONString(user), XContentType.JSON);     UpdateResponse updateResponse = client.update(updateRequest, RequestOptions.DEFAULT);     System.out.println(updateResponse.status()); } 
删除文档 
1 2 3 4 5 6 7 8 9 10 @Test void  testDeleteRequest ()  throws  IOException     DeleteRequest deleteRequest = new  DeleteRequest("kylin_index" , "1" );     deleteRequest.timeout("1s" );     DeleteResponse deleteResponse = client.delete(deleteRequest, RequestOptions.DEFAULT);     System.out.println(deleteResponse.status()); } 
批量操作 创建 BulkRequest对象BulkRequest bulkRequest = new BulkRequest();
client.bulk(bulkRequest, RequestOptions.DEFAULT);
bulkResponse.hasFailures()判断是否失败
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 @Test void  testBulkRequest ()  throws  IOException     BulkRequest bulkRequest = new  BulkRequest();     bulkRequest.timeout("10s" );     ArrayList<User> userList = new  ArrayList<>();     userList.add(new  User("kylin1" , 3 ));     userList.add(new  User("kylin2" , 3 ));     userList.add(new  User("kylin3" , 3 ));     userList.add(new  User("kylin4" , 3 ));     userList.add(new  User("kylin5" , 3 ));     userList.add(new  User("kylin6" , 3 ));     userList.add(new  User("kylin7" , 3 ));          for  (int  i = 0 ; i < userList.size(); i++) {         bulkRequest.add(new  IndexRequest("kylin_index" ).id(""  + (i + 1 )).source(JSON.toJSONString(userList.get(i)), XContentType.JSON));     }     BulkResponse bulkResponse = client.bulk(bulkRequest, RequestOptions.DEFAULT);     System.out.println(bulkResponse.hasFailures()); } 
其他的获取更新也类似该操作。
查询文档 创建搜索请求new SearchRequest("索引名");
构建搜索条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
查询条件,我们可以使用QueryBuilders工具来实现 
QueryBuilders.termQuery 精确查询QueryBuilders.matchAllQuery()匹配所有sourceBuilder.query(termQueryBuilder);添加查询条件sourceBuilder.highlighter();构建高亮 
搜索请求添加搜索条件searchRequest.source(sourceBuilder);
客户端执行搜索client.search(searchRequest, RequestOptions.DEFAULT);
 searchResponse.getHits().getHits()获取hits
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 @Test void  testSearch ()  throws  IOException     SearchRequest searchRequest = new  SearchRequest("kylin_index" );          SearchSourceBuilder sourceBuilder = new  SearchSourceBuilder();     sourceBuilder.highlighter();                    TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name" ,             "kylin1" );          QueryBuilders.matchAllQuery();     sourceBuilder.query(termQueryBuilder);     sourceBuilder.timeout(new  TimeValue(60 , TimeUnit.SECONDS));     searchRequest.source(sourceBuilder);     SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);          System.out.println(JSON.toJSONString(searchResponse.getHits()));     System.out.println("=================================" );     for  (SearchHit documentFields : searchResponse.getHits().getHits()) {         System.out.println(documentFields.getSourceAsMap());     } }