咕泡学院 p6 elasticstack高级开发与架构--29课 跨集群查询能力实践
单集群的master节点一定要有,单机群的风险
(一)跨集群查询
成都机房作为主集群,上海和福州的机房作为查询集群
转载自博客:https://blog.csdn.net/Ahri_J/article/details/106739266
ES 中可以配置远程集群实现跨集群的搜索,极大的提高了 ES 集群的水平扩展性,跨集群搜索也是 ES 认证考试中经常考的知识点。本篇文章简单总结下 ES 远端集群的配置和跨集群搜索作为备忘,也希望对需要的同学有所帮助。
一. 配置远端集群
为了实现跨集群搜索首先需在当前集群中配置远端集群,我们可以通过下面三种方式配置:
1. 配置文件设置
首先可以在 ElasticSearch 的 yml 配置文件中设置,ES 启动时就会建立与远端集群的链接,配置如下:
ES 中可以配置远程集群实现跨集群的搜索,极大的提高了 ES 集群的水平扩展性,跨集群搜索也是 ES 认证考试中经常考的知识点。本篇文章简单总结下 ES 远端集群的配置和跨集群搜索作为备忘,也希望对需要的同学有所帮助。 一. 配置远端集群 为了实现跨集群搜索首先需在当前集群中配置远端集群,我们可以通过下面三种方式配置: 1. 配置文件设置 首先可以在 ElasticSearch 的 yml 配置文件中设置,ES 启动时就会建立与远端集群的链接,配置如下:
cluster: remote: cluster_one: seeds: 127.0.0.1:9300 transport.ping_schedule: 30s cluster_two: seeds: 127.0.0.1:9301 transport.compress: true skip_unavailable: true
配置说明
cluster_one:自定义的集群名称
seeds:集群的节点列表,可以配置多个
transport.ping_schedule: 设置发送 ping 请求检测连接状态的时间间隔
skip_unavailable:跨集群搜索是否跳过不可用集群
2. ES 请求设置
除了配置文件外,还可以通过 ES 请求的方式设置远程集群,这也是比较推荐的一种方式,API 如下:
1. CURL 请求
curl -XPUT "http://localhost:9202/_cluster/settings" -H 'Content-Type: application/json' -d' {"persistent":{"cluster":{"remote":{"cluster0":{"seeds":["127.0.0.1:9300"],"transport.ping_schedule":"30s"},"cluster1":{"seeds":["127.0.0.1:9301"],"transport.compress":true,"skip_unavailable":true},"cluster2":{"seeds":["127.0.0.1:9302"]}}}}}
2. ES DSL 命令
PUT _cluster/settings { "persistent": { "cluster": { "remote": { "cluster_one": { "seeds": [ "127.0.0.1:9300" ], "transport.ping_schedule": "60s" }, "cluster_two": { "mode": "sniff", "seeds": [ "127.0.0.1:9301" ], "transport.compress": false }, "cluster_three": { "mode": "proxy", "proxy_address": "127.0.0.1:9302", "transport.compress": true } } } } }
3. Kibana Management 添加
除了上面两种方式外,我们还可以在 Kibana 管理界面 Management -> Remote clusters 中进行配置,步骤如图所示:
上面图中已经有两个配置了,我在添加一个新的集群如下:
现在三个远端集群就配置好了,如图
配置完成后可以通过下面的 API 查询:
GET _remote/info { "cluster1" : { "seeds" : [ "127.0.0.1:9301" ], "connected" : true, "num_nodes_connected" : 1, "max_connections_per_cluster" : 3, "initial_connect_timeout" : "30s", "skip_unavailable" : true }, "cluster0" : { "seeds" : [ "127.0.0.1:9300" ], "connected" : true, "num_nodes_connected" : 1, "max_connections_per_cluster" : 3, "initial_connect_timeout" : "30s", "skip_unavailable" : false }, "cluster2" : { "seeds" : [ "127.0.0.1:9301" ], "connected" : true, "num_nodes_connected" : 1, "max_connections_per_cluster" : 3, "initial_connect_timeout" : "30s", "skip_unavailable" : true } }
4. 删除远端集群
如果某个远端集群不再需要了,可以通过 Kibana 界面或者下面的命令进行删除:
二. 跨集群搜索
远端集群配置完成后就可以进行跨集群搜索了,API 非常简单,就是在 Search 请求中指定对应的集群和索引即可。
1. 搜索本地集群
直接指定索引名默认搜索的就是 local 集群。
远端集群配置完成后就可以进行跨集群搜索了,API 非常简单,就是在 Search 请求中指定对应的集群和索引即可。
1. 搜索本地集群
直接指定索引名默认搜索的就是 local 集群。
GET /twitter/_search { "query": { "match": { "user": "kimchy" } } }
2. 在指定单个集群中搜索
对于远端集群需要采用 集群名称:索引名的方式指定。
# 在 cluster_one 远端集群中搜索 GET /cluster_one:twitter/_search { "query": { "match": { "user": "kimchy" } } }
3. 在多个集群中实现跨集群搜索
# 在 local、clustr_one、cluster_two 三个集群中搜索 GET /twitter,cluster_one:twitter,cluster_two:twitter/_search { "query": { "match": { "user": "kimchy" } } }
posted on 2024-04-08 14:43 luzhouxiaoshuai 阅读(27) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!