IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> ElasticSearch跨集群搜索(Cross Cluster Search) -> 正文阅读

[大数据]ElasticSearch跨集群搜索(Cross Cluster Search)

注: 部分概念介绍来源于网络

一、概念
Elasticsearch在5.3版本中引入了Cross Cluster Search(CCS 跨集群搜索)功能,用来替换掉要被废弃的Tribe Node。类似Tribe Node,Cross Cluster Search用来实现跨集群的数据搜索。跨集群搜索使您可以针对一个或多个远程集群运行单个搜索请求 。例如,您可以使用跨集群搜索来过滤和分析存储在不同数据中心的集群中的日志数据。
1)Cross Cluster Search简介
cross-cluster search功能允许任何节点作为跨多个群集的federated client(联合客户端),与tribe node不同的是cross-cluster search节点并不会加入remote cluster(远程集群),而是用轻量的方法连接到remote cluster,以便执行federated search(联合搜索)
2)Remote cluster
要使用cross-cluster search之前需要先了解remote cluster
一个remote cluster中有"name"和seed nodes(种子节点)列表以供引用,注册remote cluster时,会从其中一个seed node来检查其集群状态,以便在默认情况下选择最多三个有资格的节点作为gateway nodes(网关节点), 集群中配置了remote cluster的每个节点都连接到一个或多个gateway nodes,并使用它们将federated search到remote cluster。
可以使用集群设置(可以动态更新)在全局指定remote cluster,也可以在各个节点中的elasticsearch.yml指定remote cluster 。
如果节点通过elasticsearch.yml文件配置remote cluster,则可以通过该节点连接到remote cluster。换句话说,federated search只有发送到该节点才能连接到remote cluster。通过cluster settings API 设置的remote cluster集群中的每个节点(设置了cluster.remote.connect: true的节点)都可以连接。
二、配置Cross Cluster Search
有2种方式可以用来配置CCS:
1)配置elasticsearch.yml
search:
? remote:
? ? elasticsearch-1:
? ? ? seeds: 127.0.0.1:9300
?? ? ?seeds: 127.0.0.1:9301
? ? ? seeds: 127.0.0.1:9302
? ? elasticsearch-2:
? ? ? seeds: 192.168.8.185:8300
? ? ? seeds: 192.168.8.185:8301
?? ? ?seeds: 192.168.8.185:8302
注意:以上方式,在配置的时候,需要remote cluster处在运行状态。比如在配置“america”的集群的时候,需要“europe”集群处在运行状态,否则节点无法启动成功。
2)使用 Cluster Settings API配置
PUT _cluster/settings
{
? "persistent": {
? ? "cluster": {
? ? ? "remote": {
? ? ? ? "elasticsearch-1": {
? ? ? ? ? "seeds": [
? ? ? ? ? ? "127.0.0.1:9300",
? ? ? ? ? ? "127.0.0.1:9301",
? ? ? ? ? ? "127.0.0.1:9302"
? ? ? ? ? ]
? ? ? ? },
? ? ? ? "elasticsearch-2": {
? ? ? ? ? "seeds": [
? ? ? ? ? ? "192.168.8.185:8300",
? ? ? ? ? ? "192.168.8.185:8301",
? ? ? ? ? ? "192.168.8.185:8302"
? ? ? ? ? ]
? ? ? ? }
? ? ? }
? ? }
? }
}
推荐使用API方式,可以方便的修改remote cluster的seeds和其他配置。
3)删除远程群集:
PUT _cluster/settings
{
? "persistent": {
? ? "cluster": {
? ? ? "remote": {
? ? ? ? "elasticsearch-2": {
? ? ? ? ? "seeds": null?
? ? ? ? }
? ? ? }
? ? }
? }
}
如果想要delete一个remote cluster,则把对应的seeds设置为null即可。
三、验证Cross Cluster Search
1)使用_remote/info查看CCS连接状态:
GET _remote/info
2)使用跨集群搜索:
同时查询2个集群的数据:
GET /elasticsearch-1:elasticsearch-1,elasticsearch-2:elasticsearch-2/_search
cross-cluster search还可以在不同群集上搜索相同名称的index
GET /elasticsearch-2:elasticsearch-1,elasticsearch-1/_search
搜索结果的歧义与索引在请求中消除歧义的方式相同。即使index名称相同,这些index也会在合并结果时被视为不同的index。从远程index检索的所有结果都将以remote cluster的name为前缀:
五、CCS的配置
1)seeds
配置的远程集群的remote cluster的一个node。
2)connected
如果至有少一个到远程集群的连接则为true。
3)num_nodes_connected
远程集群中连接节点的数量。
4)max_connections_per_cluster
远程集群维护的最大连接数。
5)transport.ping_schedule
设置了tcp层面的活性监听
6)skip_unavailable
设置为true的话,当这个remote cluster不可用的时候,就会忽略,默认是false,当对应的remote cluster不可用的话,则会报错。
7)cluster.remote.connections_per_cluster
gateway nodes数量,默认是3
8)cluster.remote.initial_connect_timeout
节点启动时等待远程节点的超时时间,默认是30s
9)cluster.remote.node.attr:
一个节点属性,用于过滤掉remote cluster中 符合gateway nodes的节点,比如设置cluster.remote.node.attr=gateway,那么将匹配节点属性node.attr.gateway: true 的node才会被该node连接用来做CCS查询。
10)cluster.remote.connect:
默认情况下,群集中的任意节点都可以充当federated client并连接到remote cluster,cluster.remote.connect可以设置为 false(默认为true)以防止某些节点连接到remote cluster
11)在使用api进行动态设置的时候每次都要把seeds带上
六、remote cluster search的两种模式
有两种模式来进行remote cluster search,这两种是基于不同的网络情况来做的选择
1)最小化网络通信次数
这种情况也是默认的情况,当前es的协调节点针对一次请求只访问对应的remote cluster一次,拉取回来所有的的数据,减少了网络交互的次数,减少了网络延迟。
2)非最小化网络通信次数
当前es的协调节点对应一次search会请求remote cluster两次,一次是获取remote cluster的shard信息,第二次是直接请求remote的对应的shard进行数据获取。
感觉这种方式对于网络比较好的集群来说,效果更好,减少了一次数据聚合的过程,直接在当前cluster的协调节点对数据进行组装即可。
?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-11-25 08:11:03  更:2021-11-25 08:12:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:01:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码