public classTest02 {
RestHighLevelClient client;//1.创建searchRequest请求对象
SearchRequest searchRequest = new SearchRequest("root02");//2.创建searchSourceBuilder对象-->封装查询对象
SearchSourceBuilder searchSourceBuilder = newSearchSourceBuilder();
@BeforeEachpublic voidbefore() {
client= newRestHighLevelClient(
RestClient.builder(new HttpHost("62.234.118.219", 9902, "http")));
}/*查询所有*/@Testpublic void matchAll() throwsIOException {//创建查询对象QueryBuilder
QueryBuilder queryBuilder =QueryBuilders.matchAllQuery();//封装查询对象
searchSourceBuilder.query(queryBuilder);//searchSourceBuilder封装到searchRequest对象中
searchRequest.source(searchSourceBuilder);
showContext();
}/*模糊匹配查询*/@Testpublic void matchDoc() throwsIOException {//3.创建查询对象
QueryBuilder queryBuilder = QueryBuilders.matchQuery("title", "小米");
searchSourceBuilder.query(queryBuilder);
searchRequest.source(searchSourceBuilder);//发送请求
showContext();
}/*精确查询,一般用于查询不分词字段*/@Testpublic void term() throwsIOException {
QueryBuilder queryBuilder= QueryBuilders.termQuery("price", 2706);
searchSourceBuilder.query(queryBuilder);
searchRequest.source(searchSourceBuilder);
showContext();
}//排序,高亮,分页查询
@Testpublic void commons() throwsIOException {
QueryBuilder queryBuilder= QueryBuilders.matchQuery("title", "小米");
searchSourceBuilder.query(queryBuilder);/*排序
//默认升序排序
分页:
size: 页大小
from: 起始索引位置 int start = (pagenum -1) * pagesize_
高亮:设置条件
前置标签:
后置标签:
高亮字段:*/HighlightBuilder highlightBuilder= newHighlightBuilder();
highlightBuilder.preTags("");
highlightBuilder.postTags("");
highlightBuilder.field("title");
searchSourceBuilder.sort("price", SortOrder.ASC).from(4).size(2).highlighter(highlightBuilder);
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse=client.search(searchRequest, RequestOptions.DEFAULT);//7.解析结果
SearchHits searchHits =searchResponse.getHits();if (null !=searchHits) {
SearchHit[] hits=searchHits.getHits();for(SearchHit hit : hits) {
String sourceAsString=hit.getSourceAsString();
System.out.println("查询结果:" +sourceAsString);/*高亮结果解析*/Map highlightFields =hit.getHighlightFields();if (!highlightFields.isEmpty()) {
Text title= highlightFields.get("title").getFragments()[0];
System.out.println("高亮结果: " +title);
}
}
}
}//封装请求和打印数据
public void showContext() throwsIOException {//发送请求
SearchResponse searchResponse =client.search(searchRequest, RequestOptions.DEFAULT);//解析结果
SearchHits searchHits =searchResponse.getHits();if (null !=searchHits) {
SearchHit[] hits=searchHits.getHits();for(SearchHit hit : hits) {
String sourceAsString=hit.getSourceAsString();
System.out.println("查询结果:" +sourceAsString);
}
}
}
@AfterEachpublic void close() throwsIOException {
client.close();
}
}