写个Java使用elasticsearch搜索的demo
时间: 2023-06-30 15:06:49 浏览: 59
好的,以下是一个简单的 Java demo,使用 Elasticsearch 进行搜索:
```java
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.http.HttpHost;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
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;
public class ElasticsearchDemo {
public static void main(String[] args) throws IOException {
// 连接 Elasticsearch
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
// 构造查询条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("content", "Java"));
sourceBuilder.timeout(new TimeValue(60, TimeValue.MINUTES));
// 构造查询请求
SearchRequest searchRequest = new SearchRequest("index_name");
searchRequest.source(sourceBuilder);
// 执行查询
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理查询结果
SearchHit[] hits = searchResponse.getHits().getHits();
for (SearchHit hit : hits) {
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
System.out.println(sourceAsMap);
}
// 关闭 Elasticsearch 连接
client.close();
}
}
```
其中,`HttpHost` 表示 Elasticsearch 的地址和端口,`SearchSourceBuilder` 构造查询条件,`SearchRequest` 构造查询请求,`RestHighLevelClient` 执行查询,`SearchResponse` 表示查询结果,`SearchHit` 表示每个匹配的文档,可以通过 `getSourceAsMap()` 方法获取文档内容。