1、依赖的导入  
< dependency> < groupId>  org.elasticsearch.client</ groupId> < artifactId>  elasticsearch-rest-high-level-client</ artifactId>  
</ dependency>  
  
 2、客户端链接  
RestHighLevelClient  client =  new  RestHighLevelClient ( RestClient . builder ( HttpHost . create ( "http://localhost:9200" ) ) ) ; 
  
 3、索引库的相关操作  
 1、索引库的创建  
@Test 
void  createTestIndex ( )  throws  IOException  { CreateIndexRequest  request =  new  CreateIndexRequest ( "test_index" ) ; String  source =  "{\n"  + "        \"mappings\":{\n"  + "        \"properties\":{\n"  + "            \"id\":{\n"  + "                \"type\":\"integer\"\n"  + "            },\n"  + "            \"name\":{\n"  + "                \"type\":\"text\",\n"  + "                \"analyzer\":\"ik_max_word\"\n"  + "            },\n"  + "            \"age\":{\n"  + "                \"type\":\"integer\"\n"  + "            },\n"  + "            \"sex\":{\n"  + "                \"type\":\"keyword\"\n"  + "            },\n"  + "            \"bossId\":{\n"  + "                \"type\":\"integer\"\n"  + "            },\n"  + "            \"departmentId\":{\n"  + "                \"type\":\"integer\"\n"  + "            }\n"  + "        }\n"  + "    }\n"  + "}" ; request. source ( source,  XContentType . JSON ) ; client. indices ( ) . create ( request,  RequestOptions . DEFAULT ) ; 
} 
  
 2、判断索引库是否存在  
@Test 
void  existsTestIndex ( )  throws  IOException  { GetIndexRequest  request =  new  GetIndexRequest ( "test_index" ) ; boolean  is =  client. indices ( ) . exists ( request,  RequestOptions . DEFAULT ) ; System . out. println ( is) ; 
} 
  
 3、删除索引库  
@Test 
void  deleteTestIndex ( )  throws  IOException  { DeleteIndexRequest  request =  new  DeleteIndexRequest ( "test_index" ) ; client. indices ( ) . delete ( request,  RequestOptions . DEFAULT ) ; 
} 
  
 4、文档的操作  
 1、创建文档  
@Test 
void  createDocTest ( )  throws  IOException  { Employee  employee =  employeeMapper. selectAllById ( 1 ) ; IndexRequest  request =  new  IndexRequest ( "test_index" ) . id ( employee. getId ( ) . toString ( ) ) ; String  source =  JSON . toJSONString ( employee) ; request. source ( source,  XContentType . JSON ) ; client. index ( request,  RequestOptions . DEFAULT ) ; 
} 
  
 2、获取指定的文档  
@Test 
void  getDocTest ( )  throws  IOException  { GetRequest  request =  new  GetRequest ( "test_index" , "1" ) ; GetResponse  response =  client. get ( request,  RequestOptions . DEFAULT ) ; String  json =  response. getSourceAsString ( ) ; System . out. println ( json) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; 
} 
  
 3、更新文档  
@Test 
void  updateDocTest ( )  throws  IOException  { UpdateRequest  request =  new  UpdateRequest ( "test_index" , "1" ) ; request. doc ( "age" , 18 ) ; client. update ( request, RequestOptions . DEFAULT ) ; 
} 
  
 4、删除文档  
@Test 
void  deleteDocTest ( )  throws  IOException  { DeleteRequest  request =  new  DeleteRequest ( "test_index" , "1" ) ; client. delete ( request, RequestOptions . DEFAULT ) ; 
} 
  
 5、批量操作(创建)  
@Test 
void  batchCreateDocTest ( )  throws  IOException  { BulkRequest  request =  new  BulkRequest ( ) ; List < Employee >   employees =  employeeMapper. selectAll ( ) ; for ( Employee  e :  employees) { request. add ( new  IndexRequest ( "test_index" ) . id ( e. getId ( ) . toString ( ) ) . source ( JSON . toJSONString ( e) , XContentType . JSON ) ) ; } client. bulk ( request, RequestOptions . DEFAULT ) ; 
} 
  
 5、搜索文档  
 1、分词查询-查询全部  
@Test 
void  matchAllTest ( )  throws  IOException  {   SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( )  . query ( QueryBuilders . matchAllQuery ( ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 2、分词查询-指定字段  
@Test 
void  matchQueryTest ( )  throws  IOException  {  SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( )  . query ( QueryBuilders . matchQuery ( "name" , "晨" ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 3、精确查询  
@Test 
void  termQueryTest ( )  throws  IOException  {   SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( )  . query ( QueryBuilders . termQuery ( "age" , "33" ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 4、范围查询  
@Test 
void  rangeQueryTest ( )  throws  IOException  {   SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( )  . query ( QueryBuilders . rangeQuery ( "age" ) . gte ( 30 ) . lte ( 35 ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 5、复合查询  
@Test 
void  boolQueryTest ( )  throws  IOException  {   SearchRequest  request =  new  SearchRequest ( "test_index" ) ; BoolQueryBuilder  boolQuery =  QueryBuilders . boolQuery ( ) ; boolQuery. must ( QueryBuilders . matchQuery ( "name" , "雨" ) ) ; boolQuery. filter ( QueryBuilders . rangeQuery ( "age" ) . gte ( 20 ) . lte ( 35 ) ) ; request. source ( ) . query ( boolQuery) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 6、分页排序查询  
@Test 
void  pageSortQueryTest ( )  throws  IOException  {   int  page =  3 , size =  10 ; SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( ) . from ( ( page- 1 ) * size)  . size ( size) . sort ( "id" ,  SortOrder . ASC ) . query ( QueryBuilders . matchAllQuery ( ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; System . out. println ( employee) ; } 
} 
  
 6、高亮查询  
@Test 
void  highLightQueryTest ( )  throws  IOException  {   SearchRequest  request =  new  SearchRequest ( "test_index" ) ; request. source ( ) . highlighter ( new  HighlightBuilder ( )  . field ( "name" )  . requireFieldMatch ( false )  )  . query ( QueryBuilders . matchQuery ( "name" , "晨" ) ) ; SearchResponse  response =  client. search ( request, RequestOptions . DEFAULT ) ; SearchHits  searchHits =  response. getHits ( ) ; long  total =  searchHits. getTotalHits ( ) . value; System . out. println ( "总共有:"  +  total +  "条数据" ) ; SearchHit [ ]  hits =  searchHits. getHits ( ) ; for ( SearchHit  h :  hits) { String  json =  h. getSourceAsString ( ) ; Employee  employee =  JSON . parseObject ( json,  Employee . class ) ; HighlightField  name =  h. getHighlightFields ( ) . get ( "name" ) ; employee. setName ( name. getFragments ( ) [ 0 ] . toString ( ) ) ; System . out. println ( employee) ; } 
}