ElasticsearchRestTemplate封装工具类
时间: 2023-12-20 13:29:55 浏览: 38
以下是一个ElasticsearchRestTemplate封装工具类的示例:
```java
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.query.NativeSearchQuery;
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
public class ElasticsearchUtil {
@Autowired
private ElasticsearchRestTemplate elasticsearchRestTemplate;
@Autowired
private RestHighLevelClient restHighLevelClient;
/**
* 根据查询条件查询文档列表
*
* @param queryBuilder 查询条件
* @param clazz 文档类型
* @param <T> 泛型
* @return 文档列表
*/
public <T> List<T> search(QueryBuilder queryBuilder, Class<T> clazz) {
NativeSearchQuery searchQuery = new NativeSearchQueryBuilder()
.withQuery(queryBuilder)
.build();
return elasticsearchRestTemplate.queryForList(searchQuery, clazz);
}
/**
* 根据查询条件查询文档列表
*
* @param searchRequest 查询请求
* @param clazz 文档类型
* @param <T> 泛型
* @return 文档列表
*/
public <T> List<T> search(SearchRequest searchRequest, Class<T> clazz) {
SearchResponse searchResponse = null;
try {
searchResponse = restHighLevelClient.search(searchRequest);
} catch (Exception e) {
e.printStackTrace();
}
return elasticsearchRestTemplate.responseToList(searchResponse, clazz);
}
/**
* 根据查询条件查询文档列表
*
* @param searchSourceBuilder 查询条件
* @param clazz 文档类型
* @param <T> 泛型
* @return 文档列表
*/
public <T> List<T> search(SearchSourceBuilder searchSourceBuilder, Class<T> clazz) {
SearchRequest searchRequest = new SearchRequest();
searchRequest.source(searchSourceBuilder);
return search(searchRequest, clazz);
}
}
```
该工具类封装了ElasticsearchRestTemplate提供的API,可以根据查询条件查询文档列表,并返回指定类型的文档列表。其中,search方法有三个重载,分别接受QueryBuilder、SearchRequest和SearchSourceBuilder类型的查询条件。在使用该工具类时,只需要注入ElasticsearchUtil即可。