SearchRequestBuilder使用详细示例
时间: 2024-02-04 12:04:24 浏览: 51
SearchRequestBuilder 是 Elasticsearch Java API 中的一个类,用于构建 Elasticsearch 查询请求。下面是一个详细的示例:
首先,创建一个 TransportClient 对象,连接到 Elasticsearch 集群:
```java
TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("localhost"), 9300));
```
然后,创建一个 SearchRequestBuilder 对象,用于构建查询请求:
```java
SearchRequestBuilder searchRequestBuilder = client.prepareSearch("my_index")
.setTypes("my_type")
.setQuery(QueryBuilders.matchQuery("title", "elasticsearch"))
.addAggregation(AggregationBuilders.terms("tags").field("tags.keyword"))
.setSize(10);
```
在上面的代码中,我们指定了查询的索引和类型,设置了查询条件,添加了一个聚合查询,并且限制了返回结果的数量为 10 条。
接下来,执行查询请求,并处理查询结果:
```java
SearchResponse searchResponse = searchRequestBuilder.execute().actionGet();
SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits) {
String title = hit.getSource().get("title").toString();
System.out.println("Title: " + title);
}
Terms terms = searchResponse.getAggregations().get("tags");
for (Terms.Bucket bucket : terms.getBuckets()) {
String tag = bucket.getKeyAsString();
long count = bucket.getDocCount();
System.out.println("Tag: " + tag + ", Count:" + count);
}
```
在上面的代码中,我们首先获取查询结果中的每条记录的标题,并打印出来。然后,我们获取聚合查询的结果,并打印出每个标签和对应的文档数量。
最后,关闭 TransportClient 对象:
```java
client.close();
```
阅读全文