日常使用最多的就是查询数据了,这里主要是查询数据的包装,具体实现方法包含同步异步,都有client实现,(异步需要监听下),具体见下
1、创建client
public static RestHighLevelClient getClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost(ES_IP, ES_PORT, "http")));
return client;
}
2、简单获取,根据index、type、id获取文档
/**
* 根据index、type、id查询
* @param index
* @param type
* @param id
* @return
* @throws Exception
*/
public static GetResponse get(String index,String type,String id) throws Exception{
RestHighLevelClient restClient = getClient();
GetResponse getResponse = null;
try {
GetRequest getRequest = new GetRequest(index, type, id);
getResponse = restClient.get(getRequest, RequestOptions.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}finally {
restClient.close();
}
return getResponse;
}
3、search
/**
* 用于有条件搜索文件,汇总,提供高亮显示等任何操作。
* @param index
* @param type
* @param query
* @return
* @throws Exception
*/
public static SearchResponse search(String index,String type,String query) throws Exception{
RestHighLevelClient restClient = getClient();
SearchResponse searchResponse = null;
try {
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.types(type);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
// 1.查询index、type中 name包含“懿”的所有文档
//searchSourceBuilder.query(QueryBuilders.termQuery("name","懿"));
// 2.查询index、type中 name包含"懿"或"习"的所有文档
//searchSourceBuilder.query(QueryBuilders.termsQuery("name","懿","习"));
// 3.查询index 、type中 name包含"懿"或者age 为18或19的所有文档
//searchSourceBuilder.query(QueryBuilders.termsQuery("name","懿"));
//searchSourceBuilder.query(QueryBuilders.termsQuery("age","18","24"));
//4.查询index 、type中 name包含"懿"或"习",并且age 为24的所有文档
//searchSourceBuilder.query(QueryBuilders.boolQuery()
// .must(QueryBuilders.termsQuery("name","懿","习"))
// .must(QueryBuilders.termsQuery("age","24")));
searchRequest.source(searchSourceBuilder);
searchResponse = restClient.search(searchRequest, RequestOptions.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}finally {
restClient.close();
}
return searchResponse;
}