Elasticsearch工具类的封装
时间: 2023-07-03 14:06:08 浏览: 100
Elasticsearch是一个开源的分布式搜索引擎,它可以快速地存储、搜索和分析大量数据。在实际的使用中,我们通常需要对Elasticsearch进行一些封装,以简化API的使用。下面是一个Java工具类的封装示例:
```java
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.search.SearchType;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.unit.TimeValue;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class ElasticsearchUtil {
private RestHighLevelClient restHighLevelClient;
public ElasticsearchUtil(RestHighLevelClient restHighLevelClient) {
this.restHighLevelClient = restHighLevelClient;
}
/**
* 查询数据
*
* @param indexName 索引名称
* @param typeName 类型名称
* @param queryMap 查询条件
* @param from 起始位置
* @param size 返回数量
* @return
* @throws IOException
*/
public List<Map<String, Object>> search(String indexName, String typeName, Map<String, Object> queryMap, int from, int size) throws IOException {
SearchRequest searchRequest = new SearchRequest(indexName);
searchRequest.types(typeName);
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
for (Map.Entry<String, Object> entry : queryMap.entrySet()) {
searchSourceBuilder.query(QueryBuilders.matchQuery(entry.getKey(), entry.getValue()));
}
searchSourceBuilder.from(from);
searchSourceBuilder.size(size);
searchSourceBuilder.timeout(TimeValue.timeValueSeconds(60));
searchRequest.source(searchSourceBuilder);
searchRequest.searchType(SearchType.DFS_QUERY_THEN_FETCH);
SearchResponse searchResponse = restHighLevelClient.search(searchRequest);
List<Map<String, Object>> resultList = new ArrayList<>();
for (SearchHit searchHit : searchResponse.getHits()) {
resultList.add(searchHit.getSourceAsMap());
}
return resultList;
}
//其他操作方法
}
```
这个工具类主要提供了查询数据的方法,支持基于多个属性的匹配查询,同时也可以设置从哪个位置开始返回、返回多少条数据等参数。在实际使用中,我们可以根据需求进一步封装其他操作,如新增、删除、更新等。
阅读全文
相关推荐
















