你用过Elasticsearch Percolate 反向检索吗?

robinent
发布于 2022-4-26 16:48
浏览
0收藏

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区percolator query 大家肯定在文档中见过,但实际业务中则较少用到。

 

本文探究一下percolator query的使用方法、原理、适用场景。

 

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区
percolator中文含义:渗透器。

 

percolator query等价于渗透查询或者反向查询

 

我们相信大多数Elasticsearch开发人员都会按照惯例进行思考,我们为数据建模并将其存储在索引中。然后,他们通过搜索API定义查询以检索这些文档。

 

percolator query 的原理则完全相反,如下图所示:

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

您将查询存储到索引中,然后通过Percolate API定义文档以检索这些查询。

 

也就是:

 

 •  传统查询,根据查询语句的查询条件返回文档。query->document。
 •  而percolator渗透查询,根据文档返回与之匹配的查询语句。document->query。


你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区
举例:提供一个存储用户兴趣的平台,以便在每次有新内容进入时将正确的内容(通知警报)发送给正确的用户。

 

举例:用户订阅了特定主题,以便一旦该主题的新文章出现,就会向感兴趣的用户发送通知。

 

应用场景如下:

 

 •  价格监控
 •  新闻警报
 •  股票警告
 •  日志监控
 •  天气预报
 •  库存警报
 •  ......


你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区
3.1 实际业务需求


阈值告警业务场景——当指定字段count值大于阈值时候,报警提示。

 

3.2 percolator mapping定义

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

注意:percolator是等价于:keyword、long、Integer的数据类型。

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

这种定义结构是不可以修改的。

 

3.3 插入文档

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

3.4 查询实现

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

返回结果(部分):

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区

其中:"_percolator_document_slot” 指代的是:文档position,从0开始计数。

 

你用过Elasticsearch Percolate 反向检索吗?-鸿蒙开发者社区
第一:通过使用DSL将用户的待设置的预警条件构造成Elasticsearch query语句,就好像它是一个文档一样,导入Elasticsearch索引。

 

第二:每次发布新文章时,都无需对其编入索引(索引化),就可以对其进行过滤,以了解文档值是否达到阈值。

 

第三:根据返回结果_percolator_document_slot,决定是否预警及精确值预警。

分类
收藏
回复
举报
回复
    相关推荐