编写一个java的ES查询工具类
时间: 2024-02-09 09:12:18 浏览: 75
好的,以下是一个简单的 Java ES 查询工具类的代码示例:
```java
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
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;
public class ESQueryUtils {
/**
* 根据关键词查询ES中的数据
*
* @param client ES客户端连接对象
* @param indexName 索引名称
* @param keyword 查询关键词
* @param size 返回结果数量
* @return 返回查询结果列表
*/
public static List<String> searchByKeyword(RestHighLevelClient client, String indexName, String keyword, int size) throws IOException {
List<String> resultList = new ArrayList<>();
// 创建查询请求
SearchRequest searchRequest = new SearchRequest(indexName);
// 构建查询条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchQuery("content", keyword));
searchSourceBuilder.timeout(TimeValue.timeValueSeconds(60));
searchSourceBuilder.size(size);
searchRequest.source(searchSourceBuilder);
// 执行查询
SearchResponse searchResponse = client.search(searchRequest);
// 解析查询结果
SearchHit[] searchHits = searchResponse.getHits().getHits();
for (SearchHit hit : searchHits) {
resultList.add(hit.getSourceAsString());
}
return resultList;
}
}
```
这个工具类的主要作用是根据关键词查询 ES 中的数据,并返回查询结果列表。其中,使用了 Elasticsearch 的 Java 客户端 RestHighLevelClient,以及构建查询条件的 SearchSourceBuilder。查询条件中使用了 matchQuery 方法,可以通过关键词查询指定字段(这里是 content 字段)的匹配结果。最后,将查询结果中的每个 hit 的源数据转换为字符串,并添加到结果列表中。
阅读全文