使用 Elasticsearch Percolate 实现用户通知
本文介绍了如何利用 Elasticsearch 的 Percolate 功能构建用户通知系统。与传统先索引文档再查询的搜索模式不同,Percolate 允许用户预先注册查询条件,当新文档被索引时,系统会自动检测哪些查询规则被匹配,从而高效地触发通知。文章详细阐述了这一机制的原理、配置方法及实际应用场景。
背景速读
- Elasticsearch 是一个开源的分布式搜索和分析引擎,广泛用于日志、全文搜索和数据分析场景。它由 Elastic 公司维护。
- "Percolate"(渗透查询)是 Elasticsearch 的一种反向搜索功能:传统搜索是"文档进来,查询匹配文档";Percolate 是"查询预先注册,随后进来的文档自动匹配这些查询"。
- 这篇工程博客讨论的是如何用 Percolate 实现用户通知系统——每个用户订阅的"通知条件"被存为 Percolator 查询,当新事件(文档)到达时,系统自动找出哪些用户的订阅条件被命中,然后触发通知。
- 这种模式适合需要实时匹配大量预定义过滤条件的场景,比如股票价格提醒、新职位推送、GitHub 仓库星标通知等。
- 文章主要讲技术选型、数据建模、性能考量及索引设计,而非纯概念介绍。