java elasticsearch client
时间: 2025-01-01 17:26:55 浏览: 5
### Java Elasticsearch 客户端设置与使用实例
#### 设置依赖项
为了在项目中集成Elasticsearch客户端,需先引入必要的Maven或Gradle依赖。对于较新的版本,推荐采用官方提供的高阶REST客户端。
```xml
<!-- Maven -->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.10.2</version>
</dependency>
```
```groovy
// Gradle
implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.10.2'
```
#### 创建RestHighLevelClient 实例
初始化`RestHighLevelClient`对象来建立连接至Elasticsearch集群。此操作通常应在应用程序启动阶段完成,并确保资源释放机制到位以防止内存泄漏[^1]。
```java
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
public class EsClientExample {
private final RestHighLevelClient client;
public EsClientExample() {
this.client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
}
}
```
#### 执行索引请求
通过构建并执行`IndexRequest`可以向指定索引添加文档数据。这里展示了如何创建带有元数据映射的简单例子。
```java
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.common.xcontent.XContentType;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public void indexDocument(String id) throws IOException {
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("user", "kimchy");
jsonMap.put("postDate", new Date());
jsonMap.put("message", "trying out Elasticsearch");
IndexRequest request = new IndexRequest("posts")
.id(id)
.source(jsonMap);
// 或者更复杂的方式,当需要更多字段时
Map<String, String> metadata = new HashMap<>();
metadata.put("log_topic", "example_log"); // 如同配置中的fields.log_topic定义[^2]
IndexRequest complexRequest = new IndexRequest("complex_index")
.id(id)
.source(metadata, XContentType.JSON);
client.index(request, RequestOptions.DEFAULT);
}
```
#### 关闭客户端
应用结束前务必关闭`RestHighLevelClient`以确保存储资源被适当回收。
```java
client.close();
```
阅读全文