上云无忧 > 文档中心 > 百度智能云Elasticsearch Java 客户端 - High Level REST Client
Elasticsearch
百度智能云Elasticsearch Java 客户端 - High Level REST Client

文档简介:
本文基于Java High Level REST Client 7.x版本,为您介绍Elasticsearch Java API的用法。 准备工作: 安装Java,要求JDK版本为1.8及以上。 创建Baidu Elasticsearch实例,版本7.4.2。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文基于Java High Level REST Client 7.x版本,为您介绍Elasticsearch Java API的用法。

准备工作

  • 安装Java,要求JDK版本为1.8及以上。
  • 创建Baidu Elasticsearch实例,版本7.4.2。

    注意 High Level Client能够向上兼容,但为了保证最大程度地使用最新版客户端的特性,推荐High Level Client版本与集群版本一致。

  • 创建Java Maven工程,并将如下的pom依赖添加到Java工程的pom.xml文件中。

pom依赖

<dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>elasticsearch-
rest-high-level-client</artifactId> <version>7.4.2</version> </dependency> <dependency> 
<groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.7</version>
 </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> 
<version>2.7</version> </dependency>

示例

以下代码为使用Create Index API创建索引,使用异步调用的方式写入文档,删除文档,使用Delete API删除该索引等操作的示例,可供参考。

import java.io.IOException; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import 
org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import
 org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.nio.client.HttpAsync
ClientBuilder; import org.elasticsearch.action.ActionListener; import org.elasticsearch.action.admin.
indices.delete.DeleteIndexRequest; import org.elasticsearch.action.delete.DeleteRequest; import 
org.elasticsearch.action.delete.DeleteResponse; import org.elasticsearch.action.index.IndexRequest; 
import org.elasticsearch.action.index.IndexResponse; import org.elasticsearch.action.support.master.
AcknowledgedResponse; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client
.RestClient; import org.elasticsearch.client.RestClientBuilder; import org.elasticsearch.client.
RestHighLevelClient; import org.elasticsearch.client.indices.CreateIndexRequest; import org.elasticsearch.
client.indices.CreateIndexResponse; import org.elasticsearch.common.settings.Settings; import org.
elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; 
import org.elasticsearch.common.xcontent.XContentType; public class RestClientTest742 { public static
 void main(String[] args) { final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
 //访问用户名和密码为您创建Elasticsearch实例时设置的用户名和密码。 credentialsProvider.setCredentials(AuthScope.ANY, 
new UsernamePasswordCredentials("{访问用户名}", "{访问密码}")); // 通过builder创建rest client,配置http 
client的HttpClientConfigCallback。 // ES HTTP URL 在Baidu Elasticsearch界面中可以查询 RestClientBuilder
 builder = RestClient.builder(new HttpHost("{ES HTTP URL}", 8200)) .setHttpClientConfigCallback(new 
RestClientBuilder.HttpClientConfigCallback() { @Override public HttpAsyncClientBuilder customizeHttpC
lient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider
(credentialsProvider); } }); // RestHighLevelClient实例通过REST low-level client builder进行构造。 
RestHighLevelClient client = new RestHighLevelClient(builder); try { //创建索引 CreateIndexRequest 
createRequest = new CreateIndexRequest("my_index"); //创建的每个索引都可以有与之关联的特定设置。
 createRequest.settings(Settings.builder() .put("index.number_of_shards", 3) .put("index.number_of_replicas", 1)
 .put("index. refresh_interval", "10s") ); // 创建索引时创建文档类型映射 createRequest.mapping("{\n" + " 
 \"message\": {\n" + "      \"properties\": {\n" + "        \"message\": {\n" + " 
 \"type\": \"text\"\n" + "        }\n" + "      }\n" + "    }\n" + "  }", XContentType.JSON); 
// 同步执行创建索引操作 CreateIndexResponse createIndexResponse = client.indices().create(createRequest, 
RequestOptions.DEFAULT); System.out.println("create index successfully! response : "
 + createIndexResponse.toString()); // 写入文档 // 以XContentBuilder对象的形式提供,Elasticsearch 
内部会帮我们生成JSON内容 XContentBuilder jsonBuilder = XContentFactory.jsonBuilder(); jsonBuilder.startObject();
 { jsonBuilder.field("user", "Kobe Bryant"); jsonBuilder.field("number", 24); jsonBuilder.field("message", 
"One of the greatest basketball players since the 21st century"); } jsonBuilder.endObject(); IndexRequest
 indexRequest = new IndexRequest("my_index").id("1").source(jsonBuilder); //异步执行写入文档操作,
方法不会阻塞并立即返回。 ActionListener<IndexResponse> listener = new ActionListener<IndexResponse>()
 { @Override public void onResponse(IndexResponse indexResponse) { //执行成功时调用。 Response以参数方式提供
 System.out.println("Index doc successfully! response : " + indexResponse.toString()); } @Override public
 void onFailure(Exception e) { //在失败的情况下调用。 引发的异常以参数方式提供 System.out.println("Index doc
 fail!"); e.printStackTrace(); } }; //异步执行索引请求需要将IndexRequest实例和ActionListener实例传递给异步方法:
 client.indexAsync(indexRequest, RequestOptions.DEFAULT, listener); // 删除文档 DeleteRequest deleteRequest 
= new DeleteRequest("my_index").id("1"); // 执行删除文档操作 DeleteResponse deleteResponse = client.delete
(deleteRequest, RequestOptions.DEFAULT); System.out.println("Delete doc successfully! \n" + deleteResponse.
toString() + "\n" + deleteResponse.status()); // 指定要删除的索引名称 DeleteIndexRequest deleteIndexRequest 
= new DeleteIndexRequest("my_index"); // 执行删除索引操作 AcknowledgedResponse deleteIndexResponse = 
client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT); System.out.println("delete index 
successfully! response : " + deleteIndexResponse.toString()); } catch (IOException ioException) 
{ // 异常处理。 ioException.printStackTrace(); } finally { // 在不需要使用client后,将client关闭。
 try { client.close(); } catch (IOException e) { e.printStackTrace(); } } } }

以上示例代码中带{}的参数需要替换为您具体业务的参数,详情请参见代码注释。

更多Java High Level REST Client的使用特性,请参见Java High Level REST Client官方文档。

相似文档
  • 本文基于Java Low Level REST Client 7.x版本,为您介绍Elasticsearch Java API的用法。 准备工作: 安装Java,要求JDK版本为1.8及以上。 创建Baidu Elasticsearch实例,版本7.4.2。 注意 Low Level Client能够与任何版本的Elasticsearch兼容,因此客户端版本可以为任何版本,本文以7.4.2版本为例。
  • 本文介绍使用PHP、Python和Go客户端访问Baidu Elasticsearch的方法,并提供了示例代码和注意事项供您参考。 PHP语言: 警告: Elasticsearch的PHP客户端提供的默认连接池并不适合云上环境,可能在长连接断开时出现连接异常的问题。推荐PHP客户端访问程序使用SimpleConnectionPool作为连接池,并做好失败重连的机制。
  • 新建和修改定时调度任务: 通过调用API,新建和修改创建索引、删除索引、存储限制、索引置冷、备份数据、集群配置、rollover、forcemerge等定时调度任务。 修改定时调度任务,需要填写该任务相关的全部参数,请求后进行全量字段更新。
  • 调用API,查看定时调度任务。 请求参数: Header 参数: 参数名 类型 是否必须 描述 示例值 x-Region String 是 区域 bd
  • 调用API,删除定时调度任务。 请求参数: Header 参数: 参数名 类型 是否必须 描述 示例值 x-Region String 是 区域 bd
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部