java restful api 介绍

1 介绍

es在提供了java client API之后,又提供了java 的restful API操作。该API不与对应的es版本直接关联,即API版本是5.3,但是可以直接与es2.3的版本进行交互。因为java client API只是封装了HTTP操作,通过http协议与ES交互。

      官网列举特点:

  1. 最小的包依赖
  2. 在所有节点上达到负载均衡
  3. 在节点故障和特定响应代码的情况下进行故障转移
  4. 连接失败惩罚:失败尝试越多,客户端等待时间越长。

2 引入

要求jdk1.7+。 官网地址
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>rest</artifactId>
    <version>5.4.0</version>
</dependency>


3 初始化

RestClient是请求http的客户端,是线程安全。
RestClient restClient = RestClient.builder(
        new HttpHost("localhost", 9200, "http"),
        new HttpHost("localhost", 9201, "http")).build();

关闭:
restCliet.close()

4 执行请求

初始化RestClient后,可以调用其 performRequest和performRequestAsync执行同步和异步的方法。具体可参考,这里只给出一个简单sample

创建索引:
HttpEntity entity = new NStringEntity(
"{\n" +
"    \"company\" : \"qbox\",\n" +                                      
"    \"title\" : \"Elasticsearch rest client\"\n" +
"}", ContentType.APPLICATION_JSON);
Response indexResponse = restClient.performRequest("PUT","/blog/post/1",Collections.<String, String>emptyMap(),entity);
System.out.println(EntityUtils.toString(indexResponse.getEntity()));

5 读取请求

Response response = restClient.performRequest("GET", "/",
        Collections.singletonMap("pretty", "true"));
System.out.println(EntityUtils.toString(response.getEntity()));

//index a document
HttpEntity entity = new NStringEntity(
        "{\n" +
        "    \"user\" : \"kimchy\",\n" +
        "    \"post_date\" : \"2009-11-15T14:12:12\",\n" +
        "    \"message\" : \"trying out Elasticsearch\"\n" +
        "}", ContentType.APPLICATION_JSON);

Response indexResponse = restClient.performRequest(
        "PUT",
        "/twitter/tweet/1",
        Collections.<String, String>emptyMap(),
        entity);

6 项目参考


实际使用过程中可以参考如下两个项目
https://github.com/luminis-ams/elastic-rest-spring-wrapper/
https://github.com/jettro/elasticclientdemo
1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值