设置参数 `node.name` 可以自定义 Elasticsearch 节点的名字。 此条 Tips 由 medcl 贡献。

【 INFINI Workshop 北京站】1月18日一起动手实验玩转 Easysearch

活动liaosy 发表了文章 • 0 个评论 • 1833 次浏览 • 2023-12-15 16:22 • 来自相关话题

与 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家扫描海报二维码免费报名参加。

活动时间:2024-01-18 13:30~17:30

活动地点:北京市海淀区 Wework 辉煌时代大厦 3 楼 3E 会议室

分享议题

  • Easysearch 总体介绍及搭建实战
  • 基于 INFINI Console 实现跨版本、跨引擎统一管控
  • Elasticsearch -> Easysearch 在线迁移实操

    参会提示

  • 请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机)
  • 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console)
  • 下载地址:<https://www.infinilabs.com/download>;
  • 如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系


    20231214-095304-qrcode.jpeg


搜索客:Elasticsearch 中文社区的崭新征程

默认分类medcl 发表了文章 • 0 个评论 • 3958 次浏览 • 2023-11-13 19:58 • 来自相关话题

 Elasticsearch 中文社区在不知不觉中已经走过了十二个春秋。这段时间,我们有幸因为 Elasticsearch 相识,相聚于线上线下的社区活动,共同切磋技术,互相吐槽。从最初的 QQ 群到后来的微信群,从最初几个人的小聚到后来接近千人的大会,社区的成长仿佛是一场神奇的旅程。Elasticsearch 中文社区一直保持着一种松散而亲切的组织形式,相信参与社区活动的小伙伴们都能感受到我们与其他社区的不同之处。
 
01.png

 
社区就是一个大家庭,很多小伙伴可能现在已经没有活跃在相关领域了,但是在咱们社区发展的过程中,有很多优秀的小伙伴积极参与做出了大量杰出的贡献,第一次大会的场地离不开 @三斗室 的大力支持,还记得只有 20-30 号人,糙的很,连拍照都没有来得及进行,社区里面带来各种干货分享 @wood 大叔,一直在社区默默奉献的石阳,说学逗唱样样精通的斌哥,深圳分会的杨振涛,武汉分会的白凡,南京分会的李啸,广州分会的鸿智等等其他各个城市的社区分会主席们,咱们甚至台湾还有分会,还记得 Advent 分享文章接力么,还记得咱们的翻译小组么,还记得咱们一起通宵达旦编写 Elasticsearch 权威指南中文版本的的日子么, 80 多人浩浩荡荡分成 5 个团队,中国开源史上最早的大协作,咱们还有社区编辑部,现在还在坚持每天一篇相关行业新闻的社区日报社,迄今为止已经 1700 多期了,还有每次大会的志愿者们,还有给咱们社区带来几百个分享的嘉宾们,名字实在太多了,不能一一列举了,但我都记下了,这个社区正是因为有了你们,才这么精彩,感谢你们。

然而,没有哪项技术能永远保持新鲜活力,当一些技术逐渐成熟,相应的讨论似乎也变得有限。然而,搜索领域的从业者并未停止前行的脚步,每一年都有新的搜索技术涌现,今年的最火话题必然是 GenAI 或者 AIGC 啦,Embedding、LLM、向量数据库、RAG 摩拳擦掌,传统搜索是否还能再战几个回合?硬件发展也是一日千里,几百核,上 TB SSD 的机器成为常态,快速迭代的硬件架构需要与时俱进的软件架构,兼顾安全和高效的 Rust 发展也是热火朝天,我于 2021 年底离开 Elastic 出来创办了 INFINI Labs 也在积极探索下一代搜索引擎的发展,不过可以预见的是,未来的搜索必定将更加智能化,性能更加强悍,使用更加简单,相信大家和我一样我对新技术的发展充满了期待,拭目以待吧。

从业十多年来一直在围绕搜索打转,深感搜索技术所涵盖的领域极为广泛,从文本分析到从自然语言处理,从算法到数据结构,从单机高性能到海量 PB 分布式,从机器学习到大模型,从传统的运维日志分析到上天揽月的前沿科技,都有搜索技术的身影。众行致远,国外有类似 BERLIN BUZZWORDS 这样优质的大会和交流社区,而国内这样垂直且优质的社区还相对较为缺乏,希望咱们的社区能够成为这样一个专注于搜索领域的小圈子。并且应该更加开放,除了 Elasticsearch,其他任何跟搜索相关的技术和框架我们都欢迎交流,也希望国内更多和我们一样参与搜索核心技术研究的厂商和同仁们也能参与进来,并且希望在这里,不仅是可以围绕搜索的各种相关技术进行讨论交流,还能找到志同道合的朋友一起共同进步,共同构建一个咱们自己的小家园。

04.png


因此,Elasticsearch 中文社区进行全新的品牌升级,正式更名为“搜索客”,以新的 Slogan:“搜索人自己的社区” 为宣言,并以全新的面貌来迎接社区的小伙伴们,相信你们已经注意到了我们的社区网站已经更新了全新的 Logo 和视觉风格,后续调整完毕也将启用新的域名:searchkit.org/searchkit.cn。 我们期望新的搜索客社区能够为广大搜索领域的从业者提供更为丰富和便捷的交流平台。希望在这里,我们能够共同见证搜索技术的新篇章,为整个搜索领域的发展添砖加瓦。


Medcl

【INFINI Workshop 上海站】7 月 27 日一起动手实验玩转 Easysearch

资讯动态liaosy 发表了文章 • 1 个评论 • 1764 次浏览 • 2023-07-07 16:30 • 来自相关话题

【 INFINI Workshop 上海站】7 月 27 日下午 和 INFINI Labs 的技术专家面对面,第一时间了解极限实验室的发布最新产品和功能特性,通过动手实战,快速掌握最前沿的搜索技术,并用于实际项目中。欢迎大家免费报名参加。

活动时间:2023-07-27 13:30~17:30
活动地点:上海静安区武宁南路1号 WeWork 越商大厦 3 楼 3A 会议室
(注意:活动地址已更新,已报名小伙伴无需重新报名。)

分享议题
• Easysearch 总体介绍及搭建实战
• 基于 INFINI Console 实现跨版本、跨引擎统一管控
• Elasticsearch -> Easysearch 在线迁移实操


参会提示
请务必自备电脑(Windows 系统环境请提前安装好 Linux 虚拟机)
• 请提前在 INFINI Labs 官网下载对应平台最新安装包(INFINI Easysearch、INFINI Gateway、INFINI Console)
• 下载地址:https://www.infinilabs.com/download


名额有限,对 ES 国产化感兴趣的朋友们速度报名(扫描海报中的二维码或者点击 链接 即可免费报名)。
 
如有任何疑问可添加 INFINI Labs 小助手(微信号: INFINI-Labs)进行联系。

飞书20230719-130323.png

【4月8日】Elastic 中国开发者大会 2023 议程预告

活动liaosy 发表了文章 • 0 个评论 • 4512 次浏览 • 2023-03-29 21:33 • 来自相关话题

【年度盛会】Elastic 中国开发者大会 2023,来自Elastic官方、极限科技、阿里、腾讯、谷歌、字节等业界专家带来的干货分享,我们诚挚邀请您共同参与。扫下图二维码或文末“阅读原文”即可报名购票参加(已报过名的参会者请勿重复报名),附上八折购票码(折扣码: 80OFF)。

大会议程


ES大会议程20230408.png




关于大会

Elastic 中国开发者大会 2023 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑,大会最早发起于 2013 年初一个很小的线下聚会,之后每年迅速成长,往年大会的演讲嘉宾有来自 Elastic 官方、Google、腾讯、阿里巴巴、百度、字节、360、微博、美团、58、苏宁等众多公司的技术专家,带来过众多精彩的分享,与会听众大多为大数据领域相关的架构师、技术经理与一线开发工程师和运维工程师。

我们本着非盈利目的来举办大会,今年的大会将于2023年4月8日在深圳举行,举办开发者大会的目的是为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。

大会时间:2023-04-08 08:00-18:00
大会地点:深圳深铁皇冠假日酒店
大会官网:[https://conf.elasticsearch.cn](https://conf.elasticsearch.cn)

INFINI Gateway和 Console 更新发布啦!

资讯动态liaosy 发表了文章 • 0 个评论 • 4847 次浏览 • 2023-02-10 23:12 • 来自相关话题

![INFINI Labs 产品更新发布](https://elasticsearch.cn/uploa ... 90.png)

Hi,大家好。今天 INFINI Labs 为大家带来 2023 春节后第一波产品更新发布,欢迎大家免费下载体验使用。

INFINI Gateway v1.9.0


极限网关本次迭代带来了大量的更新如下:

Breaking changes

  • Refactoring config for ip access control
  • Disable elasticsearch metadata refresh by default
  • Update default config path from configs to config
  • Remove sample-configs, moved to dedicated integrated-testing project
  • Remove field conntime, update field @timestamp to timestamp in logging filter
  • Rename disorder to fast

    Features

  • Support listen on IPv6 address
  • Add general health api
  • Add request_ip to context
  • Add badger filter plugin
  • Allow to split produce and consume messages from s3
  • Add bulk_request_throttle filter
  • Support access request context and more output options in echo filter
  • Add body_json to response context
  • Add cert config to API module, support mTLS
  • Add api to clear scroll context
  • Floating_ip support stick by priority
  • Add keystore util
  • Allow to save success bulk results in bulk_indexing processor
  • Enable watch and reload the major config file
  • Support run background job in one goroutine
  • Allow to handle async_bulk request logging
  • Add config to control cluster health check while cluster not available, set default to false
  • Allow to follow redirects in http filter, set default read and write timeout to 30s
  • Support collect instance metrics to monitoring gateway
  • Add json log format

    Bug fix

  • Fix user was removed in logging filter
  • Fix incorrect message size issue, reload when files changed in disk_queue
  • Fix issue that index_diff could not finished automatically
  • Fix hostname was not well updated in filter set_request_header or set_hostname
  • Fix to check consumer’s lag instead of queue’s lag in flow_runner processor
  • Fix file not found error for disk_queue
  • Fix the delete requests was not proper handled in filter bulk_reshuffle, bulk_request_mutate and bulk_indexing processor
  • Fix memory leak caused by misuse of bytes buffer
  • Fix to handle the last request in replay processor
  • Fix url args was not updated after change
  • Fix memory leak when serving high-concurrent requests
  • Fix nil id caused error when using sliced workers in bulk_indexing processor
  • Fix index name with dot
  • Refactoring time fields for orm, skip empty time
  • Refactoring stats, allow to register extended stats
  • Fix to restart gateway entrypoint on flow change
  • Update ratio filter, fix random number, add header to ratio filter
  • Fix query parameter no_cache was not well respected in get_cache filter
  • Fix single delete request was ignored in bulk requests
  • Fix request mutate filter

    Improvements

  • Remove newline in indexing_merge and json_indexing processor
  • Improve instance check, add config to disable
  • Add option skip_insecure_verify to s3 module
  • Improve instance check, enable config to disable
  • Update the way to get ctx process info, optimize memory usage
  • Improve indexing performance for bulk_indexing processor
  • Refactoring disk_queue, speedup message consumption
  • Enable segment compress for disk_queue by default
  • Skip download s3 files when s3 was not enabled
  • Add option to log warning messages for throttle filters
  • Optimize hash performance for getting primary shardID and partitionID
  • Add cache for get index routing table
  • Optimize performance for bulk response processing
  • Refactoring bulk_processor, pass meta info to payload func
  • Don’t call payload func for delete action
  • Improve queue consumer’s lag check
  • Enable prepare flat files ahead for read by default, skip unnecessary file
  • Add object pool for xxhash
  • Refactoring disk_queue, handle consumer in-flight segments in memory
  • Add config to remove duplicated newline for bulk_processor
  • Add metric timestamp in stats api
  • Improve error on routing table missing
  • Refactoring bytes buffer and object pool, expose metrics via API
  • Refactoring tasks pooling, support throttle and unified control
  • Optimize badger file size and memory usage
  • Refactoring time fields for orm, skip empty time
  • Refactoring stats, allow to register extended stats
  • Refactoring to handle bulk response results
  • Add client_session_cache_size to tls setting
  • Safety add newline to each bytes when handle bulk requests

    INFINI Console v0.7.0


    INFINI Console 本次迭代更新如下:

  • 新增初始化安装向导;
    image.png



  • 新增系统服务健康监控;
  • 新增 License 授权;
    image_(1).png



  • 新增索引和节点层面数据字节写入吞吐量指标(indexing bytes);
  • 修复了 Discover 第一次加载未发起搜索请求的问题;
  • 修复了查看节点线程池指标时选择多个节点后指标不显示的问题;

    期待反馈


    欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github([https://github.com/infinilabs](https://github.com/infinilabs)) 中的对应项目中提交 Feature Request 或提交 Bug。

  • INFINI Gateway: [https://github.com/infinilabs/gateway/issues](https://github.com/infinilabs/gateway/issues)
  • INFINI Console: [https://github.com/infinilabs/console/issues](https://github.com/infinilabs/console/issues)
  • 下载地址: [https://www.infinilabs.com/download/](https://www.infinilabs.com/download/)

    您还可以通过邮件联系我们:hello@infini.ltd

    或者拨打我们的热线电话:(+86) 400-139-9200

    也欢迎大家添加微信小助手(INFINI-Labs)拉群交流和学习。

    640.jpeg




    感谢大家的围观,祝大家周末愉快。

招聘搜索引擎内核研发工程师(Rust方向)

求职招聘medcl 发表了文章 • 0 个评论 • 5153 次浏览 • 2023-01-28 17:33 • 来自相关话题

Hello 大家好,开工大吉,兔年吉祥,站长来此招募小伙伴啦,加入我们一起打造下一代的实时搜索引擎。
 
岗位职责
  • 设计并开发下一代实时搜索引擎 ;
  • 持续优化实现方案,改进组件性能 ;
  • 保证工程质量和开发效率 。

 
岗位要求
  • 3 年以上搜索引擎开发经验,计算机相关专业,本科及以上学历 ;
  • 熟练掌握 Rust/C/C++/Golang 中的一种或多种语言,有 Rust 实际开发经验者优先 ;
  • 熟悉 Linux 操作系统,了解Linux系统常用操作命令, 能基于shell编写脚本 ;
  • 熟悉 Linux 下内存管理机制,低延迟、高并发无锁化编程 ;
  • 熟悉 TCP/IP、Socket、HTTP 等网络协议 ;
  • 具有良好的沟通、团队协作能力;
  • 熟悉常见分布式算法,有大规模分布式系统开发经验优先;
  • 较好的英文阅读和写作能力,具备比较强的逻辑思维能力;
  • 良好的编码习惯和技术文档能力,具备持续输出的能力;
  • 工作地点不限 。

 
加分项
  • 有自己的博客、Github、开源项目优先 ;
  • 具有相关搜索引擎开发工作经验者优先 ;
  • 熟悉各类索引结构;
  • 熟悉 LSM-Tree、B+Tree、RocksDB、LevelDB 优先 ;
  • 有较强的学习能力,愿意致力于新技术的研究 。

 
更多信息请访问极限实验室官网: https://www.infinilabs.com/career/

《Elastic Stack 实战手册》 介绍及下载

Elasticsearchliuxg 发表了文章 • 1 个评论 • 3136 次浏览 • 2022-08-12 17:19 • 来自相关话题

本书由数十位 Elasticsearch 技术圈的优秀开发者共创而成,得到了许多资深业界精英,社区技术大咖,Elastic Stack 相关书籍作者的支持,凝聚了众多创作人的实践经验和创作能力。 书籍涵盖了一位 Elastic Stack 开发者所需的必要知识,尤其对于刚入门的开发者,从上篇基础的 Elastic Stack 产品能力到下篇的应用实践,提供了系统性学习参考的上手指南。

Elasticsearch 无疑是大数据搜索引擎中的王者,它以其开放及免费、易用、多语言接口、卓越性能及不断创新的优势,被许多 IT 企业所采用。当今的许多IT 企业很难绕过它。在中国,Elastic Stack 有一个很强大的生态圈。在本书的创作过程中,我非常高兴看到有数十位志愿者参与到本书的创作中。这本书集众技术大咖及专家们的无私奉献,是他们牺牲了自己宝贵的时间,利用业余时间共创完成,在一遍遍的修改中把内容做得更完善。在这里衷心感谢他们的无私付出和合作。

写书和做社区贡献,是需要情怀的。我一直坚信帮助别人,也会成就自己。分享自己的知识,也是一件很快乐的事,因为这样可以证明自己的人生价值。我有超过16 年的社区参与经历,也非常喜欢分享我学到的知识。从加入Elastic 公司以来,我在CSDN 上已经发表了将近660 篇关于Elastic Stack 方面的文章,涵盖了Elastic Stack 方方面面的知识。

作为本书主编,我投入了很多时间来策划、创作、校正及阅读这本书,尽力保证本书的完整性、正确性、一致性及每篇文章的独立性。尽管如此,里面可能有不尽之处,希望读者们海涵!这本书涵盖了Elastic Stack 的介绍、安装、实操、产品能力、方案及案例,特别适合初学者,

对有经验的开发者来说也是一本难得的参考书。在未来,希望有更多的开发者分享自己的知识,

让我们一起把Elastic 社区做得更好!

我强烈推荐想学 Elastic Stack 技术的开发者,下载这本书作为参考。下载连接为 Elastic Stack 实战手册-藏经阁-阿里云开发者社区 https://developer.aliyun.com/ebook/7687
 
https://elasticstack.blog.csdn ... 01982
 

alibaba_book.png

 
 

Open Source@Scale!2022年国际开源节(IOSF)全球首发!

默认分类OSTech 发表了文章 • 0 个评论 • 5 次浏览 • 2022-04-07 11:36 • 来自相关话题

2022国际开源节(IOSF)
由OSTech携手环球资源,联合中国信息通信研究院、Linux基金会亚太区发起策划,在CTIS消费者科技及创新展览会落地,并聚集了包括中国科学院软件研究所、CNCF、LF AI & Data、LFOSSA、LF Edge、OpenSSF、Hyperledger基金会等国际一流开源基金会和机构,GDG、开源中国等全球知名开发者社区,以及上海开源信息技术协会等本地开源力量的共建支持。国际开源节旨在汇聚全球开源技术与项目,融合国际文化、开源社区生态和开源产业发展,构建“共创共赢”的开源文化,打造中国开源新生态。
2022国际开源节(IOSF)
由OSTech携手环球资源,联合中国信息通信研究院、Linux基金会亚太区发起策划,在CTIS消费者科技及创新展览会落地,并聚集了包括中国科学院软件研究所、CNCF、LF AI & Data、LFOSSA、LF Edge、OpenSSF、Hyperledger基金会等国际一流开源基金会和机构,GDG、开源中国等全球知名开发者社区,以及上海开源信息技术协会等本地开源力量的共建支持。国际开源节旨在汇聚全球开源技术与项目,融合国际文化、开源社区生态和开源产业发展,构建“共创共赢”的开源文化,打造中国开源新生态。

极限网关初探(2)配置

Elasticsearchxushuhui 发表了文章 • 0 个评论 • 1784 次浏览 • 2022-04-06 17:03 • 来自相关话题

配置

上一篇我们先学习了极限网关的安装和启动,今天学习配置。

读写分离



现在我们遇到读写分离的需求,用网关该怎么做呢?
假设服务端现在从 http://127.0.0.1:8000 写入数据,从 http://127.0.0.1:9000 读取数据,怎么设计呢?

首先查看文档[配置文档](https://xn--d6q905cs0q16u.com/zh/docs/overview/)

我们在 gateway.yml 中定义两个 entry,分别绑定不同的端口,配置不同的 router
```yaml
entry:

  • name: write_es
    enabled: true
    router: write_router
    network:
    binding: 0.0.0.0:8000
  • name: read_es
    enabled: true
    router: read_router
    network:
    binding: 0.0.0.0:9000

    router:
  • name: write_router
    default_flow: default_flow
    tracing_flow: logging
  • name: read_router
    default_flow: default_flow
    tracing_flow: logging
    <br /> 为了演示效果,只配置一个 Elasticsearch<br /> yaml
    elasticsearch:
  • name: hello_flow
    filter:
    • echo:
      message: "hello flow"

      router:
  • name: read_router
    default_flow: hello_flow
    ```
    修改配置后启动

    ![](https://cdn.guojiang.club/Fv9j ... 2neIuu)

    返回 json 数据

    返回字符串不符合标准的 restful 接口规范,怎么返回给调用方标准 json 数据?
    ```yaml
    filter:

  • set_response:
    content_type: application/json
    body: '{"message":"hello world"}'
    ```
    修改配置后启动

    ![](https://cdn.guojiang.club/FlUk ... tJalBC)

    修改路由

    我们已经新加了接口,返回 json 数据,但是接口是直接定义在 http://127.0.0.1:9000 中,之前网关的接口就无法使用,所以我们需要单独为自定义的接口指定单独的路由
    ```yaml
    router:

  • name: read_router
    default_flow: default_flow
    tracing_flow: logging
    rules:
    • method:
      • GET
        pattern:
      • "/hello"
        flow:
      • hello_flow
        ```
        default_flow: 默认的处理流,也就是业务处理的主流程,请求转发、过滤、缓存等操作都在这里面进行

        tracing_flow:用于追踪请求状态的流,用于记录请求日志、统计等

        如果我们有过开发经验,了解 MVC 模式,flow 就类似 MVC 中的 Controller,rules 中类似路由规则,当请求匹配到配置中的路由规则时,由配置的 flow 处理业务逻辑。

        数据整体流向,从服务端发到网关,网关为每个 Elasticsearch 绑定不同的 IP 地址,每个 Elasticsearch 都有唯一一个 router 和它对应,根据请求的 method 和 path 匹配到 router 中的一个 flow,flow 中包含多个 filter 处理对数据进行流式处理

        如下图所示
        ![](https://cdn.guojiang.club/FqQE ... t66soy)

        流式处理是什么,假设水从一个管子里面流出来,管子旁边每一段依次站了几个人,第一个人往水里放点鱼,鱼和水到了第二个人,第二个人往水里放点草,鱼、水和草到了第三人等等,每个人对水做一定的操作,水经过这些操作后最后到达水池里。

        我们可以把数据当成水,filter 是管子旁边的人,水池就是 Elasticsearch

        总结

        在学习了router/flow/filter后,我们已经对极限网关的配置有了初步的了解,后续开发的时候直接查阅文档。

极限网关初探(1) 安装启动

Elasticsearchxushuhui 发表了文章 • 0 个评论 • 1791 次浏览 • 2022-04-06 16:54 • 来自相关话题

产品介绍

极限网关(INFINI Gateway)是一个面向 Elasticsearch 的高性能应用网关。特性丰富,使用简单。

它和其他业务型网关最大的区别是业务网关把请求转发给各个底层微服务,而它把请求转发给 Elasticsearch,更多是类似 Mycat 的中间件的作用。

没有使用网关之前,服务端请求多个节点
![](https://cdn.guojiang.club/Fkfv ... j5rNgV)

使用网关后
![](https://cdn.guojiang.club/FllB ... JkCjFL)

下载地址

打开 [下载地址](http://release.infinilabs.com/gateway/stable/),根据操作系统版本选择。

Windows 安装和启动

安装

下载 gateway-1.6.0_SNAPSHOT-597-windows-amd64.zip,解压如下。
![](https://cdn.guojiang.club/Furr ... N9rc3Y)
gateway-windows-amd64.exe 是启动文件,gateway.yml 是默认配置文件。

启动失败

当 gateway.yml 的 elasticsearch 选项中的 hosts 不能正常响应请求的时候,启动界面如下。
![](https://cdn.guojiang.club/FvYi ... Iw0r-T)

为什么 elasticsearch 不能访问的时候,网关还要继续提供服务呢,为什么不像业务接口启动时在基础业务组件如 MySQL/Redis 不能正常响应就直接 panic?

一方面网关作为 elasticsearch 抵挡流量冲击的城墙,在 elasticsearch 不能提供服务的时候,对之前成功的请求缓存结果,继续提供有限度的服务,为 elasticsearch 修复后上线争取时间。

另一方面业务接口和基础组件是强耦合关系,没有基础组件就完全无法对外提供数据读写服务,而网关与 elasticsearch 是松耦合关系,网关在没有 elasticsearch 的情况下也能对外提供有限度的服务。

在 gateway.yml 的 elasticsearch 选项中的 hosts 改成能够正常响应的 elasticsearch 请求地址。

启动成功

双击 gateway-windows-amd64.exe 文件,启动成功界面如下

![](https://cdn.guojiang.club/Figt ... intqJr)

访问

API 访问

由启动后终端显示可知,网关的 API 接口地址是 http://localhost:2900
sh<br /> [api.go:262] api listen at: <a href="http://0.0.0.0:2900" rel="nofollow" target="_blank">http://0.0.0.0:2900</a><br />
打开浏览器输入 http://localhost:2900,显示所有可以对外提供的 API 接口
![](https://cdn.guojiang.club/FuRr ... paD-7Y)

我们选择其中一个,在浏览器中输入 http://localhost:2900/_framework/api/_version 从路由上看该接口是查询产品的版本信息,显示如下
![](https://cdn.guojiang.club/FkOZ ... eVBXkR)

gateway.yml 中可以看到有被注释掉的一段配置,看起来应该是配置 api 地址的地方。
```yaml

api:

enabled: true

network:

binding: 127.0.0.1:2900

<br /> 把注释去掉后尝试把端口改成 2901。<br /> yaml
api:
enabled: true
network:
binding: 127.0.0.1:2901
```
改完后启动
![](https://cdn.guojiang.club/FkDO ... x5XwQT)
打开浏览器先输入 http://localhost:2900,无法正常响应请求,再输入 http://localhost:2901,可以正常响应,界面和修改配置前访问 http://localhost:2900 的界面一样,说明 API 请求地址成功修改

Elasticsearch 访问

启动日志中显示监听 8000 端口,猜测应该是 elasticsearch 请求地址,打开浏览器输入 http://127.0.0.1:8000/
sh<br /> entry [my_es_entry] listen at: <a href="http://0.0.0.0:8000" rel="nofollow" target="_blank">http://0.0.0.0:8000</a><br />
![](https://cdn.guojiang.club/Foxm ... Dw9lzO)
gateway.yml 中可以看到 my_es_entry 的 network 绑定 8000 端口,显而易见的这部分就是配置代理转发给 elasticsearch 的地址,所以安装后只需要把以前请求 elasticsearch 的地址修改为该地址。
```yaml
entry:

  • name: my_es_entry
    enabled: true
    router: my_router
    max_concurrency: 10000
    network:
    binding: 0.0.0.0:8000
    ```

    总结

    我们成功安装和启动极限网关,接下来我们学习怎么根据需求修改配置。

【延期公告】Elastic 中国开发者大会 2021 举办日期延期至3月5日

活动liaosy 发表了文章 • 0 个评论 • 1493 次浏览 • 2022-01-07 17:43 • 来自相关话题

【延期公告】
由于1月7日深圳疫情影响,为保障每位参会者健康和安全,Elastic中国开发者大会主办方经研究决定原计划于1月8日举办的大会延期至3月5日,对此延期主办方深表歉意,感谢大家的支持和理解。期待三月春暖花开和大家相聚!

 
elastic_delay_notice.png

 

使用极限网关来处置 Elasticsearch 的 Apache Log4j 漏洞

Elasticsearchmedcl 发表了文章 • 2 个评论 • 5201 次浏览 • 2021-12-11 03:57 • 来自相关话题

昨日爆出的 Log4j 安全漏洞,业界一片哗然,今天给大家介绍一下,如何使用极限网关来快速处置 Elasticsearch 的 Apache Log4j 漏洞。

【CVE 地址】

[https://github.com/advisories/GHSA-jfh8-c2jp-5v3q](https://github.com/advisories/GHSA-jfh8-c2jp-5v3q)

【漏洞描述】

Apache Log4j 是一款非常流行的开源的用于 Java 运行环境的日志记录工具包,大量的 Java 框架包括 Elasticsearch 的最新版本都使用了该组件,故影响范围非常之大。

近日, 随着 Apache Log4j 的远程代码执行最新漏洞细节被公开,攻击者可通过构造恶意请求利用该漏洞实现在目标服务器上执行任意代码。可导致服务器被黑客控制,从而进行页面篡改、数据窃取、挖矿、勒索等行为。建议使用该组件的用户第一时间启动应急响应进行修复。

简单总结一下就是,在使用 Log4j 打印输出的日志中,如果发现日志内容中包含关键词 ${,那么这个里面包含的内容会当做变量来进行替换和执行,导致攻击者可以通过恶意构造日志内容来让 Java 进程来执行任意命令,达到攻击的效果。

【漏洞等级】:非常紧急

此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。

【影响范围】:Java 类产品:Apache Log4j 2.x < 2.15.0-rc2,Elasticsearch 当前所有版本。

【攻击检测】

可以通过检查日志中是否存在 jndi:ldap://jndi:rmi 等字符来发现可能的攻击行为。

处理办法


最简单的办法是通过修改 config/jvm.options,新增以下参数,重启集群所有节点即可。
<br /> -Dlog4j2.formatMsgNoLookups=true<br />

不过,如果集群规模较大,数据较多,业务不能中断,不能通过修改 Elasticsearch 配置、或者替换 Log4j 的最新 jar 包来重启集群的情况,可以考虑使用极限网关来进行拦截或者参数替换甚至是直接阻断请求。

通过在网关层对发往 Elasticsearch 的请求统一进行参数检测,将包含的敏感关键词 ${ 进行替换或者直接拒绝,
可以防止带攻击的请求到达 Elasticsearch 服务端而被 Log4j 打印相关日志的时候执行恶意攻击命令,从而避免被攻击。

极限网关是透明代理,只需要在应用端,将以往配置指向 Elasticsearch 的地址替换为现在网关的地址即可,其他都不用动。

参考配置


下载最新的 1.5.0-SNAPSHOT 版本[http://release.elasticsearch.cn/gateway/snapshot/](http://release.elasticsearch.cn/gateway/snapshot/)

使用极限网关的 context_filter 过滤器,对请求上下文 _ctx.request.to_string 进行关键字检测,过滤掉恶意流量,从而阻断攻击。

新增一个配置文件 gateway.yml

```
path.data: data
path.logs: log

entry:

  • name: es_entrypoint
    enabled: true
    router: default
    max_concurrency: 20000
    network:
    binding: 0.0.0.0:8000

    router:
  • name: default
    default_flow: main_flow

    flow:
  • name: main_flow
    filter:
    • context_filter:
      context: _ctx.request.to_string
      action: redirect_flow
      status: 403
      flow: log4j_matched_flow
      must_not: # any match will be filtered
      regex:
      • \${.*?}
      • "%24%7B.*?%7D" #urlencode
        contain:
      • "jndi:"
      • "jndi:ldap:"
      • "jndi:rmi:"
      • "jndi%3A" #urlencode
      • "jndi%3Aldap%3A" #urlencode
      • "jndi%3Armi%3A" #urlencode
    • elasticsearch:
      elasticsearch: es-server
  • name: log4j_matched_flow
    filter:
    • echo:
      message: 'Apache Log4j 2, Boom!'

      elasticsearch:
  • name: es-server
    enabled: true
    endpoints:
    • http://localhost:9200
      <br /> <br /> 启动网关:<br /> ````<br /> ➜ ./bin/gateway -config /tmp/gateway.yml<br /> ___ _ _____ __ __ __ _ <br /> / _ \ /_\ /__ \/__\/ / /\ \ \/_\ /\_/\<br /> / /_\///_\\ / /\/_\ \ \/ \/ //_\\\_ _/<br /> / /_\\/ _ \/ / //__ \ /\ / _ \/ \ <br /> \____/\_/ \_/\/ \__/ \/ \/\_/ \_/\_/ <br /> <br /> [GATEWAY] A light-weight, powerful and high-performance elasticsearch gateway.<br /> [GATEWAY] 1.0.0_SNAPSHOT, 2021-12-10 23:55:34, 2212aff<br /> [12-11 01:55:49] [INF] [app.go:250] initializing gateway.<br /> [12-11 01:55:49] [INF] [instance.go:26] workspace: /Users/medcl/go/src/infini.sh/gateway/data/gateway/nodes/0<br /> [12-11 01:55:49] [INF] [api.go:261] api listen at: <a href="http://0.0.0.0:2900" rel="nofollow" target="_blank">http://0.0.0.0:2900</a><br /> [12-11 01:55:49] [INF] [reverseproxy.go:253] elasticsearch [es-server] hosts: [] => [localhost:9200]<br /> [12-11 01:55:49] [INF] [entry.go:296] entry [es_entrypoint] listen at: <a href="http://0.0.0.0:8000" rel="nofollow" target="_blank">http://0.0.0.0:8000</a><br /> [12-11 01:55:49] [INF] [module.go:116] all modules started<br /> [12-11 01:55:49] [INF] [app.go:357] gateway is running now.<br /> [12-11 01:55:49] [INF] [actions.go:236] elasticsearch [es-server] is available<br />

      将要使用的测试命令 ${java:os} 使用 urlencode 转码为 %24%7Bjava%3Aos%7D,构造查询语句,分别测试。

      不走网关:
      <br /> ~% curl 'http://localhost:9200/index1/_search?q=%24%7Bjava%3Aos%7D' <br /> {"error":{"root_cause":[{"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"index1","index_uuid":"_na_","index":"index1"}],"type":"index_not_found_exception","reason":"no such index","resource.type":"index_or_alias","resource.id":"index1","index_uuid":"_na_","index":"index1"},"status":404}% <br />
      查看 Elasticsearch 端日志为:
      <br /> [2021-12-11T01:49:50,303][DEBUG][r.suppressed ] path: /index1/_search, params: {q=Mac OS X 10.13.4 unknown, architecture: x86_64-64, index=index1}<br /> org.elasticsearch.index.IndexNotFoundException: no such index<br /> at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.infe(IndexNameExpressionResolver.java:678) ~[elasticsearch-5.6.15.jar:5.6.15]<br /> at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.innerResolve(IndexNameExpressionResolver.java:632) ~[elasticsearch-5.6.15.jar:5.6.15]<br /> at org.elasticsearch.cluster.metadata.IndexNameExpressionResolver$WildcardExpressionResolver.resolve(IndexNameExpressionResolver.java:580) ~[elasticsearch-5.6.15.jar:5.6.15]<br /> <br />
      可以看到查询条件里面的 q=${java:os} 被执行了,变成了 q=Mac OS X 10.13.4 unknown, architecture: x86_64-64, index=index1,说明变量被解析且执行,存在漏洞利用的风险。

      那走网关之后呢:
      <br /> ~% curl 'http://localhost:8000/index1/_search?q=%24%7Bjava%3Aos%7D' <br /> <br /> Apache Log4j 2, Boom!% <br />
      可以看到请求被过滤掉了,返回了自定义的信息。

      还有一些其他测试命令,大家也可以试试:

      ```

      {java:vm}

      ~% curl 'http://localhost:9200/index/_search?q=%24%7Bjava%3Avm%7D'
      [2021-12-11T02:36:04,764][DEBUG][r.suppressed ] [INFINI-2.local] path: /index/_search, params: {q=OpenJDK 64-Bit Server VM (build 25.72-b15, mixed mode), index=index}

      ~% curl 'http://localhost:8000/index/_search?q=%24%7Bjava%3Avm%7D'
      Apache Log4j 2, Boom!%

      {jndi:rmi://localhost:1099/api}

      ~% curl 'http://localhost:9200/index/_search?q=%24%7Bjndi%3Armi%3A%2F%2Flocalhost%3A1099%2Fapi%7D'
      2021-12-11 03:35:06,493 elasticsearch[YOmFJsW][search][T#3] ERROR An exception occurred processing Appender console java.lang.SecurityException: attempt to add a Permission to a readonly Permissions object

      ~% curl 'http://localhost:8000/index/_search?q=%24%7Bjndi%3Armi%3A%2F%2Flocalhost%3A1099%2Fapi%7D'
      Apache Log4j 2, Boom!%
      ```

      另外不同版本的 Elasticsearch 对于攻击的复现程度参差不齐,因为 es 不同版本是否有 Java Security Manager 、不同版本 JDK 、以及默认配置也不相同,新一点的 es 其实同样可以触发恶意请求,只不过网络调用被默认的网络策略给拒绝了,相对安全,当然如果设置不当同样存在风险,见过很多用户一上来就关默认安全配置的,甚至还放开很多暂时用不上的权限,另外未知的攻击方式也一定有,比如大量日志产生的系统调用可能会拖垮机器造成服务不可用,所以要么还是尽快改配置换 log4j 包重启集群,或者走网关来过滤阻断请求吧。

      使用极限网关处置类似安全事件的好处是,Elasticsearch 服务器不用做任何变动,尤其是大规模集群的场景,可以节省大量的工作,提升效率,非常灵活,缩短安全处置的时间,降低企业风险。

Elastic Meetup 重庆站讲师招募与主题征集中

活动liaosy 回复了问题 • 2 人关注 • 1 个回复 • 1394 次浏览 • 2021-11-25 16:18 • 来自相关话题

发布一个免费的 Elasticsearch 多集群监控和管理平台 - 极限数据平台

Elasticsearchmedcl 发表了文章 • 20 个评论 • 6025 次浏览 • 2021-11-22 18:48 • 来自相关话题

随着单个 Elasticsearch 集群规模的越来越大,大家要么在拆集群的路上,要么是已经是多套集群了, 据路边社消息,一个公司超过5个集群的情况已经变得非常普遍,而管理多个集群着实是有点痛苦,比如常规的玩法可能是一套集群一个 Kibana,集群一多,切换来切换去就有点懵圈了有木有?


fansile.gif




作为一个优雅的程序员或者运维管理员,是可忍孰不可忍啊。

另外,多个集群的监控也是一个麻烦事,目前常见的几种监控如:

  • 使用 Kibana 自带的监控
  • 使用 Prometheus + Grafana
  • 使用 Zabbix

    Kibana 自带的监控可以很好的满足单个集群的监控场景,不过集群规模大了之后,经常会出现指标丢失的问题,如果使用单独的监控集群,需要修改每个节点的配置,集群都需要重启,对于已经上了生产的集群,有点不方便,另外多集群监控需要商业授权。


    e82a31225ca28ed8029e0681f9346ee2.gif




    那 Prometheus 呢, 一个 Elasticsearch 集群如果要监控起来,首先需要部署一个 Exporter 来暴露集群指标,然后部署一套Prometheus 来采集 Elasticsearch 指标,采集完了之后再部署一套 Grafana 来进行报表分析,不同的集群要做好切换,简单的事情,搞复杂了,整个监控体系偏重,维护成本高。

    Zabbix 和 Prometheus 的场景差不多,就不赘述了。


    530a83558eabaa4ae4eb25501349a7a3_16590_250_187.jpeg




    那么问题来了,有没有一个更加简单方便的多集群监控和管理方案呢,并且要支持不同版本的集群,最好是 v2、v5、v6、v7 以及最新的 v8 都能统统接管,哈哈,没错了,这里给大家介绍一个我们极限实验室团队最近开发出来的一款免费的多集群监控和管理工具-极限数据平台,目前版本 v0.1,新鲜出炉。

    废话不多少,咱们直接看图说话:

    Jietu20211122-183111.jpg



    首先是多集群的纳管,目前从 1.0 到最新的 8.0 统统都可以接进来。

    Jietu20211122-183020.jpg



    然后就是集群的监控拉,要多简单有多简单,就是一个开关的事情,注册集群的时候,启用即开启监控,目标集群啥都不用动,费那劲干啥。

    监控界面如图:

    Jietu20211122-183309.jpg



    集群概览,总体情况一目了然。

    Jietu20211122-183438.jpg



    各个节点信息,分门别类。

    Jietu20211122-183504.jpg



    各个索引级别的信息,挨个查看。

    Jietu20211122-183558.jpg



    多个集群之间的监控查看一键切换,非常方便。

    查看监控的时候,发现不对劲,要操作一下集群,直接调出控制台,如下图:

    Jietu20211122-183717.jpg



    常用的操作命令,可以保存起来,方便下次使用。

    Jietu20211122-183815.jpg



    别再保存在记事本里面了,下次又找不到,直接加载执行就好了。

    Jietu20211122-183924.jpg



    好了,你要是用 Elasticsearch 不知道这个工具,那就 out 了,赶快耍起来吧。

    下载地址:

    [http://release.elasticsearch.cn/console/snapshot/](http://release.elasticsearch.cn/console/snapshot/)


    安装巨简单,简直懒得说,一个二进制可执行文件,一个 yml 配置文件,里面修改 Elasticsearch 地址,结束。

    可以在这里查看 [介绍和 Demo 演示视频](https://www.bilibili.com/video ... KdMVLQ)

    最后,欢迎关注极限实验室,获取更多 Elasticsearch 免费工具及业界资讯的第一手消息。

    WechatIMG700.jpeg


Elastic 中国开发者大会 2021 开启了,预热铁粉票已开抢,手慢无!

活动liaosy 发表了文章 • 0 个评论 • 2998 次浏览 • 2021-11-11 17:45 • 来自相关话题


banner-1080x640-infini.png

Elastic 中国开发者大会 2021 是由 Elastic 官方、Elastic 中文社区和极限科技联合主办的开发者大会,作为中国国内唯一一个专门讨论 Elasticsearch 开源技术的大会,是中国最权威和最具实力干货的技术大会,其专业性和内容的质量一直以来在业内都是有口皆碑,大会最早发起于 2013 年初一个很小的线下聚会,之后每年迅速成长,往年大会的演讲嘉宾有来自 Elastic 官方、百度、腾讯、阿里巴巴、360、微博、美团、58、苏宁等众多公司的技术专家,带来过众多精彩的分享,与会听众大多为大数据领域相关的架构师、技术经理与一线开发工程师和运维工程师。

我们本着非盈利目的来举办大会,今年的大会将于2022年1月8号在深圳举行,举办开发者大会的目的是为中国广大的 Elasticsearch 开发者提供一个技术交流和学习切磋的地方,汇集业界众多的成功案例,集思广益,发散思维,促进社区和行业的进步。
 
大会官网:https://conf.elasticsearch.cn

Elasticsearch铁粉福利:
预热-铁粉票(79元/张), 共计100张,数量有限,赶紧去报名抢购吧!
购票地址:https://www.bagevent.com/event/7899116
 
同时大会也在公开征集演讲议题与合作赞助商,欢迎各位Elastic相关技术大咖报名参与分享,欢迎有兴趣的赞助商金主大大前来合作。

演讲报名申请:http://elasticsearch.mikecrm.com/uXH61JL
赞助合作申请:http://elasticsearch.mikecrm.com/6LGkKK0