Elasticsearch java
时间: 2025-01-07 21:42:24 浏览: 3
### 使用Elasticsearch与Java集成
为了实现Elasticsearch与Java应用程序的集成,开发者通常会选择官方提供的客户端库来简化操作。当前最推荐的方式是通过使用高阶REST Client来进行交互[^2]。
#### 配置连接属性
在项目资源目录下的`application.properties`文件中配置Elasticsearch地址信息:
```properties
elasticsearch.rest.hostNames=10.21.20.168:9200 #集群地址之间用逗号分隔
```
如果存在多个节点,则可以如下定义:
```properties
elasticsearch.rest.hostNames=10.180.211.27:9200,10.180.211.28:9200,10.180.211.29:9200
```
此设置指定了用于建立通信的具体服务器列表及其端口。
#### 构建RestHighLevelClient实例
创建一个能够执行请求并处理响应的对象非常重要。下面是一个简单的例子展示如何初始化这个对象:
```java
import org.elasticsearch.client.RestHighLevelClient;
import org.apache.http.HttpHost;
public class ElasticsearchExample {
private final RestHighLevelClient client;
public ElasticsearchExample() {
this.client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
}
}
```
这段代码展示了怎样构建一个新的`RestHighLevelClient`实例,并指定目标主机为本地机器上的默认HTTP端口9200。
#### 执行基本查询
对于想要对文档数据进行检索的情况来说,编写DSL风格的JSON字符串作为参数传递给API是一种常见做法。这里给出一段示范性的索引搜索逻辑:
```java
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchSourceBuilder;
// ...
SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(sourceBuilder);
client.search(searchRequest).getHits().forEach(System.out::println);
```
上述片段说明了如何准备一次针对特定索引(`index_name`)内的所有记录进行全面匹配的操作,并打印返回的结果集中的每一项。
#### 关闭客户端链接
当完成所有的数据库访问之后,记得调用关闭方法释放资源:
```java
try {
client.close();
} catch (IOException e) {
// handle exception
}
```
这一步骤确保程序结束时不会留下未清理的网络连接。
阅读全文