Java REST Client 访问阿里云5.5 Elasticsearch 实例实现
开发环境:InteliJ IDEA
操作系统 :macOS Mojave
Elasticsearch 版本:阿里云 5.5.3_with_X-Pack
客户端版本:REST Client 5.5.3
1. 预先创建好阿里云 ES 实例,开启公网地址访问白名单。
2. 预先创建好 index 和 mapping(使用 Kibana Dev Tools 创建)
PUT index_test { "mappings": { "book": { "properties" : { "book_id" : { "type":"keyword" }, "name" : { "type":"text" } } } } }
3. 创建项目及 RestClient 类
4. pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.gary.es</groupId> <artifactId>rest-client-5</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.elasticsearch.client/rest --> <dependency> <groupId>org.elasticsearch.client</groupId> <artifactId>rest</artifactId> <version>5.5.3</version> </dependency> </dependencies> </project>
此处的 Java REST Client Demo主要适用于阿里云ES 5.5.3版本,不兼容阿里云ES 6.3.2版本。
由于阿里云Elasticsearch实例使用5.5.3版本,所以需要您的JDK至少在 1.8
及以上版本。
5. 构建 REST Client 对象进行访问
步骤一:
由于阿里云 ES 强制要求 elasticsearch-http-basic 认证,ES 官方给出的指导是:通过 builder 构造 RestClient 对象的同时,设定 builder 的回调接口 HttpClientConfigCallback。该回调接口仅有一个实现方法 customizeHttpClient(),参数接收一个 HttpAsyncClientBuilder 对象,设置该对象的验证信息(通过 CredentialProvider),然后返回该对象。
以此方法,来给 RestClient 设置验证信息,在后续向 ES 服务端请求时,带上验证信息。
步骤二:
通过 HttpEntity,拼接 JSON 请求,通过 restClient.performRequest() 发起请求。此例主要演示:创建一条索引文档并检索该文档。
import org.apache.http.HttpEntity; 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.entity.ContentType; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.nio.client.HttpAsyncClientBuilder; import org.apache.http.nio.entity.NStringEntity; import org.apache.http.util.EntityUtils; import org.elasticsearch.client.Response; import org.elasticsearch.client.RestClient; import org.elasticsearch.client.RestClientBuilder; import java.io.IOException; import java.util.Collections; public class RestClientTest { public static void main(String[] args) { // 步骤一:创建 RestClient 对象 final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("ES实例用户名", "ES实例密码")); RestClient restClient = RestClient.builder(new HttpHost("ES实例公网地址", 9200)) .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() { public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) { return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider); } }).build(); // 步骤二:发起请求 try { //index a document 往ES索引增加一条数据 HttpEntity entity = new NStringEntity("{\n\"book_id\":\"0001\",\n\"name\":\"Alice in Wonderland\"\n}", ContentType.APPLICATION_JSON); Response indexResponse = restClient.performRequest( "PUT", "/index_test/book/0001", Collections.<String, String>emptyMap(), entity); //search a document 检索ES数据 Response response = restClient.performRequest("GET", "/index_test/book/0001", Collections.singletonMap("pretty", "true")); System.out.println(EntityUtils.toString(response.getEntity())); } catch (IOException e) { e.printStackTrace(); } } }
该文档成功创建并检索得到,请求成功!
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Netflix Media Database - 架构设计和实现
前言 前面一文主要讲了NMDB的起源、业务场景以及Media Document数据模型,而本节主要讲述NMDB的系统架构、核心模块以及底层技术。在深入了解其架构之前,我们先要明确NMDB的定位和功能设计目标,先看下Netflix内部视频处理的整个流程: 算法处理:Netflix内部有一个Archer平台,在其上运行各种算法来提取视频数据中的元数据,例如提取视频帧中文字信息,提取的元数据为一个Media Document。 将Media Document写入NMDB,对其进行持久化和索引。 业务方通过NMDB提供的API对Media Document数据进行查询和分析,通常是一些带特定领域特征的时间和空间维度查询。 查询结果处理后展示给终端用户。 NMDB主要负责2,3步骤,也就是说不负责算法的执行,但负责对Media Document的存储和
- 下一篇
使用应用程序(Java/Python)访问MaxCompute Lightning进行数据开发
MaxCompute Lightning是MaxCompute产品的交互式查询服务,支持以PostgreSQL协议及语法连接访问Maxcompute项目,让您使用熟悉的工具以标准 SQL查询分析MaxCompute项目中的数据,快速获取查询结果。很多开发者希望利用Lightning的特性来开发数据应用,本文将结合示例来介绍Java和Python如何连接访问Lightning进行应用开发(参考时需要替换为您项目所在region的Endpoint及用户认证信息)。一、Java使用JDBC访问Lightning示例如下: import java.sql.*; public class Main { private static Connection connection; public static void mai
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装