温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现Elasticsearch Percolate 反向检索

发布时间:2021-12-09 16:24:42 阅读:375 作者:柒染 栏目:大数据
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

本篇文章为大家展示了如何实现Elasticsearch Percolate 反向检索,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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

1、什么是percolator查询

percolator中文含义:渗透器。

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

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

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

如何实现Elasticsearch Percolate 反向检索

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

也就是:

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

2、percolator 查询的应用场景

举例:提供一个存储用户兴趣的平台,以便在每次有新内容进入时将正确的内容(通知警报)发送给正确的用户。

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

应用场景如下:

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

3、实战一把

 

3.1 实际业务需求

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

 

3.2 percolator mapping定义

DELETE my-indexPUT /my-index{  "mappings": {    "properties": {      "threshold": {        "type": "long"      },      "count": {        "type": "long"      },      "query": {        "type": "percolator"      }    }  }}
 

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

 "query": {        "type": "percolator"      }
 

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

 

3.3 插入文档

PUT /my-index/_doc/1{  "threshold": 100,  "query": {    "bool": {      "must": {        "range": {          "count":{            "gt":100          }        }      }    }  }}
   

3.4 查询实现

GET /my-index/_search{  "query": {    "percolate": {      "field": "query",      "documents": [        {          "count": 1        },        {          "count": 50        },        {          "count": 120        },        {          "count": 150        }      ]    }  }}
 

返回结果(部分):

{  "took" : 4,.......省略.....        },        "fields" : {          "_percolator_document_slot" : [            2,            3          ]        }      }    ]  }}
 

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

4、percolator 查询如何实现?

第一:通过使用DSL将用户的待设置的预警条件构造成Elasticsearch query语句,就好像它是一个文档一样,导入Elasticsearch索引。

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

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

上述内容就是如何实现Elasticsearch Percolate 反向检索,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

原文链接:https://my.oschina.net/elastic6/blog/4397786

AI

开发者交流群×