与Elasticsearch交互的客户端

1.访问ES的方式

访问es的方式有两种,一种是http方式,还有一种是java客户端方式。

其中Java客户端又分为:
1.1.Node client:

节点客户端实际上是一个集群中的节点(但不保存数据,不能成为主节点)。因为它是一个节点,它知道整个集群状态(所有节点驻留,分片分布在哪些节点,数据在集群中的具体位置等等),这意味着它可以执行 APIs 而且少了一个网络跃点。能够直接转发请求到对应的节点上。

1.2.Transport Client:

传输客户端作为一种轻量级客户端,本身不加入集群,只是简单的发送请求到远端集群中的节点,作为一个集群和应用程序之间的通信层。它知道 API 并能自动帮你在节点之间轮询,帮你嗅探集群等等。但它是集群 外部的 ,和 REST 客户端类似。我们访问的节点负责收集各节点返回的数据(query fetch merge),最后一起返回给客户端。

构造transportClient时候,需要指定sniff是否为true

if (this.settings.getAsBoolean("client.transport.sniff", false))
   { this.nodesSampler = new SniffNodesSampler(); }
else { this.nodesSampler = new SimpleNodeSampler(); } 

这里先提一下:节点通信有5种类型:Recovery Bulk Reg State Ping

SniffNodesSampler:client会主动发现集群里的其他节点,会创建fully connect(每两个节点间建立5种连接)

SimpleNodeSampler:ping listedNodes中的所有node,区别在于这里创建的都是light connect(简单的ping和查询连接)

注意:在ES7中不建议使用Transport Client,在ES8中去除Transport Client用Java High Level REST Client代替

访问远端集群,尽量以轮询方式访问目标节点

2.如何选择JAVA客户端
如果要将应用程序和 Elasticsearch 集群进行解耦,传输客户端是一个理想的选择。例如,如果您的应用程序需要快速的创建和销毁到集群的连接,传输客户端比节点客户端”轻”,因为它不是一个集群的一部分。类似地,如果您需要创建成千上万的连接,你不想有成千上万节点加入集群。传输客户端( TC )将是一个更好的选择。
另一方面,如果你只需要有少数的、长期持久的对象连接到集群,客户端节点可以更高效,因为它知道集群的布局。但是它会使你的应用程序和集群耦合在一起,所以从防火墙的角度,它可能会构成问题。

原文地址:https://www.cnblogs.com/wzj4858/p/8127886.html

时间: 2024-10-12 23:51:53

与Elasticsearch交互的客户端的相关文章

Elasticsearch及java客户端jest使用

本文使用Github中的Elasticsearch-rtf,已经集成了众多的插件,例如必须使用的中文分词等,可以简单的通过配置来启用中文分词.本文主要分为以下几部分: 1.配置和启用中文分词: 2.定义索引的mapping 3.java客户端jest创建和检索索引 4.高亮检索结果 5.集群配置 工具: 由于Elasticsearch完全REST风格,支持json进行交互,简单的curl工具就可以完成很多功能,本文中也有部分操作会直接使用curl.window环境下建议下载一个可执行的curl.

elasticsearch 2种客户端的区别

Java连接ElasticSearch详解 Java连接ES有两种连接方式(即获得ES的Client) 1.创建一个node,加入集群中,通过这个node获得client. 2.通过TransportClient来连接集群. 区别 第一种方式,相当于额外启动了一个es的node节点,只是这个node是由我们编码控制的,可以设置成这个node是不存数据的节点(没有特殊原因你就应该这么设置),这个节点的配置和其他的节点没有什么区别,也是通过elasticsearch.yml文件来配置,配置文件放在c

PHP如何与搜索引擎Elasticsearch交互?

一:参考官方文档 1. Elasticsearch 5.4.0英文手册 https://www.elastic.co/guide/en/elasticsearch/reference/5.4/search-request-post-filter.html 2. <Elasticsearch权威指南>中文版 https://www.elastic.co/guide/cn/elasticsearch/guide/current/_talking_to_elasticsearch.html 3. 参

ElasticSearch java客户端更新时出现的错误:NoNodeAvailableException[None of the configured nodes are available

下午尝试 用ElasticSearch  的java客户端去做数据检索工作,测试了一下批量更新,代码如下: public static void bulkUpdateGoods(List<Goods> goods) throws IOException, InterruptedException, ExecutionException { Client client = null; try { client = TransportClient.builder().build() .addTra

zookeeper原理解析-客户端与服务器端交互

Zookeeper集群中server数量总是确定的,所以集群中的server交互采用比较可靠的bio长连接模型:不同于集群中sever间交互zookeeper客户端其实数量是未知的,为了提高zookeeper并发性能,zookeeper客户端与服务器端交互采用nio模型.下面我们主要来讲讲zookeeper的服务器端与客户端的交互.读者对nio不了解的话不妨抽点时间去了解下,对于一些nio框架如netty,mina再如一些web容器如tomcat,jetty底层都实现一套nio框架,对于实现ni

客户端与服务器端的交互

客户端和服务器端的交互模型: 客户端发送请求 -> 服务器端接收请求 -> 服务端准备数据内容 ->服务器端把内容返回给客户端 -> 客户端接收返回的内容 -> 客户端进行解析渲染 客户端传递给服务器端的内容以及服务器端传递给客户端的内容都是由HTTP等这种传输协议完成的

ElasticSearch的客户端操作

实际开发中,主要由三种方式可以作为elasticsearch服务的客户端: 1.elasticsearch-head插件: 2.使用elasticsearch提供的Restful接口直接访问: 3.使用elasticsearch提供的API进行访问: 使用Postman工具进行Restful接口访问(下载地址:https://www.postman.com/) 1.elasticsearch的接口语法 curl ‐X<VERB> '<PROTOCOL>://<HOST>

Elasticsearch教程-从入门到精通(转)

原文:http://mageedu.blog.51cto.com/4265610/1714522?utm_source=tuicool&utm_medium=referral 各位运维同行朋友们,大家好,非常高兴能有这么个机会与大家一起交流一些技术问题.此前的各位分享达人们在技术领域或管理领域均有十分精彩的分享,他们带给我们的是多个领域中研究或实践的最前沿知识.这使我本人获益良多,首先要郑重感谢他们. 开始之前,本人首先做一下自我介绍. 马永亮,马哥Linux运维培训创始人,已直接培养Linux

Elasticsearch教程-从入门到精通

各位运维同行朋友们,大家好,非常高兴能有这么个机会与大家一起交流一些技术问题.此前的各位分享达人们在技术领域或管理领域均有十分精彩的分享,他们带给我们的是多个领域中研究或实践的最前沿知识.这使我本人获益良多,首先要郑重感谢他们. 开始之前,本人首先做一下自我介绍. 马永亮,马哥Linux运维培训创始人,已直接培养Linux运维工程师一千多人,他们绝大多数从事Linux运维和相关管理岗位,就业公司包括但不限于阿里.腾讯.百度.京东.网易.新浪.搜狐.大众点评.饿了么等.课程的间接受益者数万人. 这