1. 排序,分页
@GetMapping ( "boolQuery2" )
public void boolQuery2 ( ) throws IOException {
SearchRequest request = new SearchRequest ( "hotel" ) ;
BoolQueryBuilder boolQuery = QueryBuilders . boolQuery ( ) ;
boolQuery. must ( QueryBuilders . termQuery ( "city" , "南京市浦口区" ) ) ;
boolQuery. filter ( QueryBuilders . rangeQuery ( "price" ) . lt ( 200 ) ) ;
request. source ( ) . query ( boolQuery) ;
request. source ( ) . from ( 0 ) . size ( 2 ) ;
request. source ( ) . sort ( "price" , SortOrder . DESC ) ;
SearchResponse response = restHighLevelClient. search ( request, RequestOptions . DEFAULT ) ;
SearchHits searchHits = response. getHits ( ) ;
long value = searchHits. getTotalHits ( ) . value;
System . out. println ( "总条数: " + value) ;
SearchHit [ ] hits = searchHits. getHits ( ) ;
for ( SearchHit hit: hits) {
String json = hit. getSourceAsString ( ) ;
System . out. println ( json) ;
}
}
2024 - 06 - 24 01 : 34 : 46.214 INFO 9052 -- - [ nio- 8080 - exec- 1 ] o. s. web. servlet. DispatcherServlet : Initializing Servlet 'dispatcherServlet'
2024 - 06 - 24 01 : 34 : 46.215 INFO 9052 -- - [ nio- 8080 - exec- 1 ] o. s. web. servlet. DispatcherServlet : Completed initialization in 0 ms
总条数: 1
{ "address" : "柳州东路1号" , "brand" : "如家" , "business" : "弘阳商圈" , "city" : "南京市浦口区" , "id" : 1 , "location" : "33.33,131.33" , "name" : "如家" , "pic" : "http://www.bai.com/images/rujia.png" , "price" : 189 , "score" : 7 , "starName" : "二星" }
2. 高亮显示
@GetMapping ( "highlight" )
public void highlight ( ) throws IOException {
SearchRequest request = new SearchRequest ( "hotel" ) ;
BoolQueryBuilder boolQuery = QueryBuilders . boolQuery ( ) ;
boolQuery. must ( QueryBuilders . termQuery ( "city" , "南京市浦口区" ) ) ;
boolQuery. filter ( QueryBuilders . rangeQuery ( "price" ) . lt ( 200 ) ) ;
request. source ( ) . query ( boolQuery) ;
request. source ( ) . from ( 0 ) . size ( 2 ) ;
request. source ( ) . sort ( "price" , SortOrder . DESC ) ;
request. source ( ) . highlighter ( new HighlightBuilder ( )
. field ( "name" )
. requireFieldMatch ( false ) ) ;
SearchResponse response = restHighLevelClient. search ( request, RequestOptions . DEFAULT ) ;
SearchHits searchHits = response. getHits ( ) ;
long value = searchHits. getTotalHits ( ) . value;
System . out. println ( "总条数: " + value) ;
SearchHit [ ] hits = searchHits. getHits ( ) ;
for ( SearchHit hit: hits) {
String json = hit. getSourceAsString ( ) ;
System . out. println ( json) ;
System . out. println ( "------- 高亮 -----------" ) ;
Map < String , HighlightField > highlightFields = hit. getHighlightFields ( ) ;
HighlightField name = highlightFields. get ( "name" ) ;
String string = name. getFragments ( ) [ 0 ] . string ( ) ;
System . out. println ( string) ;
}
}