本篇文章为大家展示了如何实现Elasticsearch Percolate 反向检索,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
percolator中文含义:渗透器。
percolator query等价于渗透查询或者反向查询。
我们相信大多数Elasticsearch开发人员都会按照惯例进行思考,我们为数据建模并将其存储在索引中。然后,他们通过搜索API定义查询以检索这些文档。
percolator query 的原理则完全相反,如下图所示:
您将查询存储到索引中,然后通过Percolate API定义文档以检索这些查询。
也就是:
举例:提供一个存储用户兴趣的平台,以便在每次有新内容进入时将正确的内容(通知警报)发送给正确的用户。
举例:用户订阅了特定主题,以便一旦该主题的新文章出现,就会向感兴趣的用户发送通知。
应用场景如下:
阈值告警业务场景——当指定字段count值大于阈值时候,报警提示。
DELETE my-index
PUT /my-index
{
"mappings": {
"properties": {
"threshold": {
"type": "long"
},
"count": {
"type": "long"
},
"query": {
"type": "percolator"
}
}
}
}
注意:percolator是等价于:keyword、long、Integer的数据类型。
"query": {
"type": "percolator"
}
这种定义结构是不可以修改的。
PUT /my-index/_doc/1
{
"threshold": 100,
"query": {
"bool": {
"must": {
"range": {
"count":{
"gt":100
}
}
}
}
}
}
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开始计数。
第一:通过使用DSL将用户的待设置的预警条件构造成Elasticsearch query语句,就好像它是一个文档一样,导入Elasticsearch索引。
第二:每次发布新文章时,都无需对其编入索引(索引化),就可以对其进行过滤,以了解文档值是否达到阈值。
第三:根据返回结果_percolator_document_slot,决定是否预警及精确值预警。
上述内容就是如何实现Elasticsearch Percolate 反向检索,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。