文档章节

Elasticsearch Rest Client

磐谷
 磐谷
发布于 2017/05/23 17:40
字数 384
阅读 544
收藏 0

    从ElasticSearch(后续简称ES)5.0开始,官方推出了自己的Rest Client(在此之前,我们使用Jest提供Rest风格的ES访问)。由于官网的Demo比较简单,在此列举几个常规的使用方法。

Java Rest Client官方地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html

Java API官方地址:https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/index.html

 

初始化RestClient

RestClient restClient = RestClient.builder(
                new HttpHost("127.0.0.1", 8310, "http"),
                new HttpHost("127.0.0.1", 8210, "http"),
                new HttpHost("127.0.0.1", 8110, "http"))
                .build();

 

写入操作

        // 可以使用json工具类、Pojo等方式生成json串
        JSONObject demo = new JSONObject();
        demo.put("user_id", 1L);
        demo.put("user_name", "yan");
        demo.put("age", 30);
        String json = demo.toJSONString();

        // http消息体
        HttpEntity httpEntity = new StringEntity(json, ContentType.APPLICATION_JSON);

        // http uri, eg. /user/basic/${id}
        String indexEndPoint = new StringBuffer()
                .append("/").append(index)
                .append("/").append(type)
                .append("/").append(id)
                .toString();

        // 该方法会抛出IOException, 根据需要进行处理
        Response response = restClient.performRequest("PUT",
                indexEndPoint,
                Collections.<String, String>emptyMap(),
                httpEntity);

        // 获取http请求结果状态,可以与org.apache.http.HttpStatus的类聚类进行判断,新数据status_code = 201, 更新status_code = 200
        int statusCode = response.getStatusLine().getStatusCode();

 

读取操作

        // 构造Query DSL,推荐使用es官方java api
        QueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.termQuery("id", 1));

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(queryBuilder);
        searchSourceBuilder.from(0).size(10);

        HttpEntity httpEntity = new StringEntity(searchSourceBuilder.toString(), ContentType.APPLICATION_JSON);

        // http uri, eg. /user/basic/_search
        String searchEndPoint = new StringBuffer()
                .append("/").append(index)
                .append("/").append(type)
                .append("/_search")
                .toString();

        // 该操作会抛出IOException;第三个参数paramMap可以添加es优化类属性,eg. pretty、rounting等
        Response response = restClient.performRequest("GET",
                searchEndPoint,
                Collections.<String, String>emptyMap(),
                httpEntity);

        /*
            {
                "took": 2,
                "timed_out": false,
                "_shards": {
                    "total": 5,
                    "successful": 5,
                    "failed": 0
                },
                "hits": {
                    "total": 1,
                    "max_score": 1,
                    "hits": [
                        {
                            "_index": "user",
                            "_type": "basic",
                            "_id": "1",
                            "_score": 1,
                            "_source": {
                                "age": 25,
                                "id": 1,
                                "name": "lee"
                            }
                        }
                    ]
                }
            }
        */
        String originReponseLine = EntityUtils.toString(response.getEntity());

 

© 著作权归作者所有

磐谷
粉丝 5
博文 23
码字总数 24987
作品 0
朝阳
高级程序员
私信 提问
ElasticSearch Client详解

从本文开始,将与大家进入到Elasticsearch的精妙世界中来,基于当前最新的6.4.x版本。 本文将重点探讨ElasticSearch Client的相关知识,重点关注TransportClient与Rest Client。Elasticsear...

丁威
03/10
0
0
Elasitcsearch High Level Rest Client学习笔记(一)

文档地址:https://www.elastic.co/guide/en/elasticsearch/client/java-rest/6.1/java-rest-high.html java doc地址: https://artifacts.elastic.co/javadoc/org/elasticsearch/client/el......

木子SMZ
2018/07/12
2.3K
0
在SpringBoot中使用Elasticsearch

一、SpringBoot模版方式接入(不建议) 其实一开始是准备用SpringBoot的模版来直接接入使用的,也就是以下这样的接入方式,也是网上大家都这么说的使用方式。 但是后面看java api的官方文档 De...

C6C
06/04
0
0
How to use Elasticsearch BBoss

Introduce Elasticsearch Bboss: A highlevel rest client. A high performence o/r mapping rest client. A dsl and sql rest client. First add the maven dependency of BBoss to your po......

bboss
01/09
656
5
SpringBoot集成ElasticSearch

1. ElasticSearch 1.1 ElasticSearch的简单介绍 ElasticSearch 是开源搜索平台领域的一个新成员。 ElasticSearch(简称 ES) 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。 具有...

我叫钱多多_
2018/09/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部