本文档为您介绍使用Java High Level REST Client调用Elasticsearch Document API的方法,提供了连接阿里云Elasticsearch集群、创建索引、创建文档、获取文档、更新文档等操作的示例代码供您参考。
背景信息
本文档提供的示例代码是基于Java High Level REST Client 6.3.x版本的,其他版本不保证兼容。
操作步骤
- 创建一个Maven项目。
- 配置pom.xml文件,添加如下的dependency依赖。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>6.3.2</version>
</dependency>
- 创建一个Package,并在此Package下创建所需的Java文件。
本案例的Package配置如下。
本案例的Java文件配置如下。

配置完成后,项目的目录如下。
- IndexAPI_use.java:创建索引和文档。
- UpdateAPI_use.java:更新文档。
- GetAPI_use.java:获取文档。
- DeleteAPI_use.java:删除文档。
说明 您也可以根据实际需求创建其他Java文件,本案例仅供参考。
- 在IndexAPI_use.java文件中,参考如下示例代码,连接您的阿里云Elasticsearch集群,并使用Java IndexRequest API创建索引。
部分示例代码如下:
//连接Elasticsearch集群
final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("elastic", "替换为密码"));
RestClientBuilder builder = RestClient.builder(new HttpHost("替换为ES实例ID.public.elasticsearch.aliyuncs.com", 9200))
.setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {
public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);
}
});
//使用Java IndexRequest API创建索引
RestHighLevelClient client = new RestHighLevelClient(builder);
try {
IndexRequest request = new IndexRequest();
request.index("apitest_index");
request.type("apitest_type");
request.id("1");
Map<String, Object> source = new HashMap<>();
source.put("user", "kimchy");
source.put("post_date", new Date());
source.put("message", "trying out Elasticsearch");
request.source(source);
try {
IndexResponse result = client.index(request);
System.out.println(result);
} catch (IOException e) {
e.printStackTrace();
}
} finally {
client.close();
}
可单击
此处下载完整的示例代码,最终打印结果如下。
IndexResponse
[
index=apitest_index,
type=apitest_type,
id=1,
version=1,
result=created,
seqNo=0,
primaryTerm=1,
shards={"total":2,"successful":1,"failed":0}
]
- 在UpdateAPI_use.java文件中,参考如下示例代码,使用Java UpdateRequest API更新文档。
部分示例代码如下。
RestHighLevelClient client = new RestHighLevelClient(builder);
try {
UpdateRequest updateRequest = new UpdateRequest("apitest_index", "apitest_type", "1");
IndexRequest indexRequest = new IndexRequest("apitest_index", "apitest_type", "1");
Map<String, String> source = new HashMap<>();
source.put("user", "dingw2");
indexRequest.source(source);
updateRequest.doc(indexRequest);
UpdateResponse result = client.update(updateRequest);
System.out.println(result);
}catch (IOException e) {
e.printStackTrace();
} finally {
client.close();
}
可单击
此处下载完整的示例代码,最终打印结果如下。
UpdateResponse
[
index=apitest_index,
type=apitest_type,
id=1,
version=2,
seqNo=1,
primaryTerm=1,
result=updated,
shards=ShardInfo{
total=2,
successful=2,
failures=[]
}
]
- 在GetAPI_use.java文件中,参考如下示例代码,使用Java GetRequest API获取文档。
部分示例代码如下。
RestHighLevelClient client = new RestHighLevelClient(builder);
try {
GetRequest request = new GetRequest("apitest_index", "apitest_type", "1");
GetResponse result = client.get(request);
System.out.println(result);
}catch (IOException e) {
e.printStackTrace();
} finally {
client.close();
}
可单击
此处下载完整的示例代码,最终打印结果如下。
{
"_index": "apitest_index",
"_type": "apitest_type",
"_id": "1",
"_version": 2,
"found": true,
"_source": {
"post_date": "2019-06-10T05:50:52.752Z",
"message": "trying out Elasticsearch",
"user": "dingw2"
}
}
- 在DeleteAPI_use.java文件中,参考如下示例代码,使用Java DeleteRequest API删除文档。
部分示例代码如下。
RestHighLevelClient client = new RestHighLevelClient(builder);
try {
DeleteRequest request = new DeleteRequest("apitest_index", "apitest_type", "1");
DeleteResponse result = client.delete(request);
System.out.println(result);
} catch(Throwable e) {
e.printStackTrace();
} finally {
client.close();
}
可单击
此处下载完整的示例代码,最终打印结果如下。
DeleteResponse
[
index=apitest_index,
type=apitest_type,
id=1,
version=3,
result=deleted,
shards=ShardInfo{
total=2,
successful=2,
failures=[]
}
]
后续步骤
根据您的实际需求,调用其他Document API完成相关操作,其他API的使用示例请参考Elasticsearch官方文档。