ES的Java Rest client---jest

Elasticsearch的入门非常简单易学。

由于有丰富的原生的Restful API,创建索引,上传数据,搜索都可以在很短时间内学会使用。官网上也有很多语言的client API与ES集群交互,有丰富的插件比如head,marvel等等。

那如果用ES这个开源项目做SAAS(software as a service),比如搜索服务,是否可以直接用它原生的API呢?

jest是一款java Rest client,它支持SSL、proxy等等,而原生的transport client是TCP连接,用户认证授权要自己想办法实现,并且封装接口控制用户的操作。

从jest的文档中我找到了一部分答案:

ElasticSearch does not have Java rest client. It has only native client comes built in. That is the gap. You can add security layer to HTTP but native API. That is why none of SAAS offerings can be used with native api. -- Searchly

原生的API没有任何安全保护层,而对于HTTP来说加一层安全认证是比较简单的。

jest client和原生的client的比较还有:

So if you have several ES clusters running different versions, then using the native (or transport) client will be a problem, and you will need to go HTTP (and Jest is the main option I think). If versioning is not an issue, the native client will be your best option as it is cluster aware (thus knows how to route your queries and does not need another hop), and also moves some computation away from your ES cluster (like merging search results that will be done locally instead of on the data node). -- Rotem Hermon

如果ES集群的版本不同,用HTTP client会好些。如果版本不是问题,原生的client是最好的选择。因为它是culster-aware的,并且可以从ES集群分担一部分计算,比如合并搜索结果是在本地client执行的而不是data node。

There are several alternative clients available when working with ElasticSearch from Java, like Jest that provides a POJO marshalling mechanism on indexing and for the search results. In this example we are using the Client that is included in ElasticSearch. By default the client doesn‘t use the REST API but connects to the cluster as a normal node that just doesn‘t store any data. It knows about the state of the cluster and can route requests to the correct node but supposedly consumes more memory. For our application this doesn‘t make a huge difference but for production systems that‘s something to think about. -- Florian Hopf

原生的client像一个单纯的节点连接集群,它知道集群的状态和路由请求,这样会消耗多一些内存,在生产环境是值得考虑的影响。

开源的东西到底要不要经常用呢?感觉初级开发人员还是少用为好。

时间: 2024-10-01 03:31:38

ES的Java Rest client---jest的相关文章

elasticsearch系列七:ES Java客户端-Elasticsearch Java client(ES Client 简介、Java REST Client、Java Client、Spring Data Elasticsearch)

一.ES Client 简介 1. ES是一个服务,采用C/S结构 2. 回顾 ES的架构 3. ES支持的客户端连接方式 3.1 REST API ,端口 9200 这种连接方式对应于架构图中的RESTful style API这一层,这种客户端的连接方式是RESTful风格的,使用http的方式进行连接 3.2 Transport 连接 端口 9300 这种连接方式对应于架构图中的Transport这一层,这种客户端连接方式是直接连接ES的节点,使用TCP的方式进行连接 4. ES提供了多种

安装java memcached client到maven repository

由于目前java memcached client没有官方的maven repository可供使用,因此使用时需要手动将其安装到本地repository.java memcached client的jar包下载地址:https://github.com/gwhalin/Memcached-Java-Client/downloads 目前2.6.2版本的java memcached client要依赖slf4j-simple.slf4j-api.commons-pool三个包,依此我们可以为其编

Java E-mail Client with GUI

Download: https://github.com/sambee/JavaMailClientWithGUI Java E-mail Client with GUI

Java设置Client Socket链接Server超时时间

Java设置Client Socket链接Server超时时间 学习了:http://blog.csdn.net/tterminator/article/details/52494141 http://blog.csdn.net/fw0124/article/details/41227543 整理如下: Socket client = null; // 创建一个流套接字,连接到指定主机上的指定端口号 // client = new Socket(IP, PORT); client = new S

ES 常用java api

java rest client 有两种: 1.Java Low Level REST Client :用于Elasticsearch的官方低层客户端.它允许通过http与Elasticsearch集群通信.叶子请求编组,响应反编组给用户.它兼容所有的Elasticsearch版本. 2.Java High Level REST Client :Elasticsearch的官方高级客户端.它基于底层客户端,公开API特定的方法,处理请求编组和响应反编组. 一.Java Low Level RES

【转】Elasticsearch Java Rest Client 指南

原文地址:https://www.jianshu.com/p/d2c8326e8fa3 仔细看了下,5.6版本的RestHighLevelClient就这么些API,有兴趣的朋友可以去看看源码: 以上包含了基本的增删改查和批量操作 我翻了一下官方文档,凉凉.确实像官方文档说的那样,需要完善.虽然是High Level的Client,但是东西少的可怜. 增(index)删(delete)改(update)查(get)操作都是和Index,type,id严格绑定的. 不能跨Index操作 目前几乎所

ES7.4 学习日记——Java REST Client :连接到集群

1.ES7版本变化 废弃了type,没有类型的概念: 废弃TransportClient,只能使用restclient. 2.Maven依赖 连接客户端主要有Rest Low Level Client和Rest High Level Client两种可以使用,两者的主要区别在于: Rest Low Level Client:低级别的REST客户端,通过http与集群交互,用户需自己编组请求JSON串,及解析响应JSON串.兼容所有ES版本.最小Java版本要求为1.7. Rest High Le

Intro to Jedis – the Java Redis Client Library

转自:http://www.baeldung.com/jedis-java-redis-client-library 1. Overview This article is an introduction to Jedis, a client library in Java for Redis – the popular in-memory data structure store that can persist on disk as well. It is driven by a keyst

【Hadoop】HA 场景下访问 HDFS JAVA API Client

客户端需要指定ns名称,节点配置,ConfiguredFailoverProxyProvider等信息. 代码示例: package cn.itacst.hadoop.hdfs; import java.io.FileInputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import org.apache.hadoop.conf.Configuration; impor