首页 > 其他分享 >使用极限网关实现 ES 跨集群搜索

使用极限网关实现 ES 跨集群搜索

时间:2024-08-18 20:48:16浏览次数:9  
标签:网关 索引 搜索 test 集群 ES

使用 ES 的小伙伴,有没有在用跨集群搜索的? 熟悉 ES 的小伙伴都知道,ES 本身就能实现跨集群搜索,那为啥还要聊这个?试想一下,如果集群都上线投产了,才出现跨集群搜索需求,那么可能出现两种情况:

  1. 两个集群都使用了证书加密传输,要实现互联,需要重新设置证书,还要重启集群;
  2. 两个集群之间可能网络不能互通;

到了这里,我们的 极限网关 就派的上用场了。在以上场景中,只要网关能顺利连接到各个集群就行了。
话不多说,我们来 demo 一下。

数据准备

集群 A,含有 test 和 test-2 索引,数据很简单。

集群 B,含有 test-follower 和 test-3 索引,其中 test-follower 索引是集群 A 的复制索引

网关配置

网关配置使用专门的 merge_cross_search_results 配置。

做个简单的演示,只需修改这三个变量。

  • LR_ELASTICSEARCH_ENDPOINT1 : 代表集群 A ;
  • LR_ELASTICSEARCH_ENDPOINT2 : 代表集群 B ;
  • LR_ELASTICSEARCH_ENDPOINT3 : 代表默认集群,可以复用集群 A 或 B ;

集群 A 和 B 是我们要做跨集群搜索的,搜索请求会在这两个集群执行,然后合并结果。

非搜索请求会发送到这个 LR_ELASTICSEARCH_ENDPOINT3 指定的集群,但是 _cat/indices?format=json 会显示集群 A 和 B 的索引。

跨集群搜索

测试一

通配符 test* 查询集群 A 和 B ,所有数据,注意查询语法,必须包含冒号。

结果包含了集群 A 的索引:test 和 test-2 ,以及集群 B 的索引:test-follower 和 test-3 。

测试二

通配符 test* 查询集群 A 和 B ,包含关键字 cluster 的内容。

测试三

通配符 test* 查询集群 A 和 B ,进行聚合查询。

测试四

通配符 test* 查询集群 A 和 B ,进行带查询条件的聚合查询。

测试五

显示集群 A 和 B 的所有索引。

最后

这次的分享就到这里了,相信大家也看到了极限网关是非常灵活的。欢迎与我一起交流 ES 的各种问题和解决方案。

标签:网关,索引,搜索,test,集群,ES
From: https://www.cnblogs.com/infinilabs/p/18366060

相关文章

  • JavaScript ES6 Map
    Map对象保存键值对。任何值(对象或者原始值)都可以作为一个键或一个值。Maps和Objects的区别一个Object的键只能是字符串或者Symbols,但一个Map的键可以是任意值。Map中的键值是有序的(FIFO原则),而添加到对象中的键则不是。Map的键值对个数可以从size属性获......
  • 数据库技术核心:查询优化(PostgreSQL)
    文章目录案例1:使用合适的索引优化查询案例2:优化多表复杂联接查询案例3:优化多条件查询案例4:消除低效的联接查询案例5:包含多个联接和聚合的复杂查询案例6:消除低效的子查询案例7:复杂窗口函数和CTE(公用表表达式)案例8:适当的表结构设计与分区表优化案例9:使用物化视图......
  • 028、Vue3+TypeScript基础,使用路由功能实现页面切换效果
    01、在main.js中引入路由并使用路由,代码如下://引入createApp用于创建Vue实例import{createApp}from'vue'//引入App.vue根组件importAppfrom'./App.vue'//引入路由importrouterfrom'./router'constapp=createApp(App);//使用路由app.use(router);//App......
  • 每天五分钟计算机视觉:搭建人脸识别的Siamese深度神经网络模型
    本文重点前面的一篇文章中介绍了关于一次学习的问题,解决一次学习问题的关键在于学习到一个函数d,这个d可以计算出两张图片中的人脸是不是同一个人。那么我们需要搭建什么样的神经网络才可以让模型学习出这样的函数d呢?本文我们介绍一下Siamese神经网络结构,它可以帮助我们解决这......
  • 手动实现 Spring 底层机制【初始化 IOC容器+依赖注入+BeanPostProcessor 机制+AOP】【
    手动实现Spring底层机制【初始化IOC容器+依赖注入+BeanPostProcessor机制+AOP】【任务1-6整合版】引言:Spring框架的ioc容器、依赖注入、BeanPostProcessor后置处理器、AOP面向切面编程等特点为我们的开发带来了极大的便利,但是我们不能只学其中的api,更要懂得Spring的底......
  • E - Permute K times
    E-PermuteKtimesProblemStatementYouaregivenasequence$X$oflength$N$whereeachelementisbetween$1$and$N$,inclusive,andasequence$A$oflength$N$.Printtheresultofperformingthefollowingoperation$K$timeson$A$.Replace$A$w......
  • 027、Vue3+TypeScript基础,使用自定义hook,把功能计算都放到hook中精简代码
    01、在view中创建myhook文件夹,并创建2个文件。usesDog.ts代码如下:import{onMounted,reactive}from"vue";importaxiosfrom"axios";exportdefaultfunction(){//抓取图片letdogList=reactive(['https://images.dog.ceo/breeds/pembro......
  • RabbitMQ集群 - 仲裁队列、Raft协议(最详细的选举流程)
    文章目录仲裁队列概述Raft协议概述基本概念选举流程(重点)消息复制仲裁队列的使用MQ管理平台SpringAMQP仲裁队列概述1)RabbitMQ普通队列在一个节点宕机之后,其他节点无法读写宕机节点的队列,为了解决这个问题,引入了仲裁队列.2)仲裁队列通过Raft协议,实现了不同......
  • 026、Vue3+TypeScript基础,使用async和await来异步读取axios的网络图片
    01、App.vue代码如下:<template><divclass="app"><h2>App.Vue</h2><Person/></div></template><scriptlang="ts"setupname="App">//JS或TSimportPersonfrom'./......
  • Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field 'com.s
    环境:JDK21问题原因是Lombok,与JDK21兼容的最低Lombok版本是1.18.30,最小的SpringBoot版本是3.1.4。解决:将lombook版本改为1.18.30<dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lomb......