博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
High Level REST Client 访问阿里云6.3 Elasticsearch 实例实现
阅读量:6088 次
发布时间:2019-06-20

本文共 3337 字,大约阅读时间需要 11 分钟。

开发环境:InteliJ IDEA

操作系统 :macOS Mojave

Elasticsearch 版本:阿里云 6.3.2_with_X-Pack

客户端版本:REST Client 6.3.2

1. 预先创建好阿里云 ES 实例,开启公网地址访问白名单。

7267421bdcb9ac46228b2049053fe238f0e43294

2. 预先创建好 index 和 mapping(使用 Kibana Dev Tools 创建)

8d282de2736e3bc0800b2d57ab23f11f710c3813

mappings: book

properties: (book_id (keyword), name (text))

PUT index_test{  "mappings": {    "book": {      "properties" : {        "book_id" : {          "type":"keyword"        },        "name" : {          "type":"text"        }      }    }  }}

3. 创建项目及 RestClient 类

99cb144d9329839df7da39a352e483d273a4f220

4. pom.xml

4.0.0
me.gary.es
high-level-rest-client-6
1.0-SNAPSHOT
org.elasticsearch.client
elasticsearch-rest-high-level-client
6.3.2

JDK至少在 1.8及以上版本。

Java REST Client 版本需要与 ES 实例版本一致。

5. 构建 REST Client 对象进行访问

Java High Level REST Client 基于 Java Low Level REST client 实现的基础上,主要目标是为了暴露该 API 特定的方法。将 request 对象作为参数,返回一个 response 对象。该 API 可以同步或异步调用,同步调用方式立即返回一个 response 对象;而异步调用方式依赖于监听,该监听当有请求返回或是错误返回时通知到该方法继续执行。Java High Level REST Client 依赖于 Elasticsearch core 项目,接收的 request 对象和返回的 response 对象和 TransportClient 一样。

本例仅演示同步调用方式。

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.HttpAsyncClientBuilder;import org.elasticsearch.action.index.IndexRequest;import org.elasticsearch.action.index.IndexResponse;import org.elasticsearch.client.RestClient;import org.elasticsearch.client.RestClientBuilder;import org.elasticsearch.client.RestHighLevelClient;import java.io.IOException;import java.util.HashMap;import java.util.Map;public class RestClientTest {    public static void main(String[] args) {        final CredentialsProvider credentialsProvider = new BasicCredentialsProvider();        credentialsProvider.setCredentials(AuthScope.ANY,                new UsernamePasswordCredentials("elastic", "Gerry0305"));        RestHighLevelClient client = new RestHighLevelClient(                RestClient.builder(new HttpHost("es-cn-mp90ww1j0001g5m8f.public.elasticsearch" +                        ".aliyuncs.com", 9200))                        .setHttpClientConfigCallback(new RestClientBuilder.HttpClientConfigCallback() {                            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {                                return httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider);                            }                        }));        try {            // 创建request            Map
jsonMap = new HashMap<>(); jsonMap.put("book_id", "0001"); jsonMap.put("name", "Pride and Prejudice"); IndexRequest indexRequest = new IndexRequest("index_test", "book", "0001") .source(jsonMap); // 同步执行 IndexResponse indexResponse = client.index(indexRequest); long version = indexResponse.getVersion(); System.out.println();

client.close();        } catch (IOException ioException) {            // 异常处理        }    }}

该文档为第一次更新,成功返回版本号“1”,示例运行成功。

09234e0ab64c8a73e91f27a95613f015f723668e

转载地址:http://thvwa.baihongyu.com/

你可能感兴趣的文章
iOS开发-NSPredicate
查看>>
我的友情链接
查看>>
Exchange Server 2003 SP2 数据存储大小限制修改
查看>>
expr命令用法-实例讲解
查看>>
酷派8705救砖
查看>>
iOS10里的通知与推送
查看>>
# C 语言编写二进制/十六进制编辑器
查看>>
EMS SQL Management Studio for MySQL
查看>>
我的友情链接
查看>>
做母亲不容易
查看>>
Power Plot
查看>>
前端框架蜘蛛网
查看>>
详细的文档(吐槽)
查看>>
为什么千里马常有,而伯乐不常有
查看>>
CentOS 7.6安装配置MariaDB异步主从复制
查看>>
求珠子的长度最小区间
查看>>
FineReport如何用JDBC连接阿里云ADS数据库
查看>>
字母大小写转化
查看>>
linux运维实战练习案例-2015年12月20日-12月31日(第一次)
查看>>
URL集合
查看>>