溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何實現(xiàn)Elasticsearch Percolate 反向檢索

發(fā)布時間:2021-12-09 16:24:42 來源:億速云 閱讀:360 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了如何實現(xiàn)Elasticsearch Percolate 反向檢索,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

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

1、什么是percolator查詢

percolator中文含義:滲透器。

percolator query等價于滲透查詢或者反向查詢。

我們相信大多數(shù)Elasticsearch開發(fā)人員都會按照慣例進行思考,我們?yōu)閿?shù)據(jù)建模并將其存儲在索引中。然后,他們通過搜索API定義查詢以檢索這些文檔。

percolator query 的原理則完全相反,如下圖所示:

如何實現(xiàn)Elasticsearch Percolate 反向檢索

您將查詢存儲到索引中,然后通過Percolate API定義文檔以檢索這些查詢。

也就是:

  • 傳統(tǒng)查詢,根據(jù)查詢語句的查詢條件返回文檔。query->document。
  • 而percolator滲透查詢,根據(jù)文檔返回與之匹配的查詢語句。document->query。
 

2、percolator 查詢的應(yīng)用場景

舉例:提供一個存儲用戶興趣的平臺,以便在每次有新內(nèi)容進入時將正確的內(nèi)容(通知警報)發(fā)送給正確的用戶。

舉例:用戶訂閱了特定主題,以便一旦該主題的新文章出現(xiàn),就會向感興趣的用戶發(fā)送通知。

應(yīng)用場景如下:

  • 價格監(jiān)控
  • 新聞警報
  • 股票警告
  • 日志監(jiān)控
  • 天氣預(yù)報
  • 庫存警報
  • ......
 

3、實戰(zhàn)一把

 

3.1 實際業(yè)務(wù)需求

閾值告警業(yè)務(wù)場景——當指定字段count值大于閾值時候,報警提示。

 

3.2 percolator mapping定義

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

注意:percolator是等價于:keyword、long、Integer的數(shù)據(jù)類型。

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

這種定義結(jié)構(gòu)是不可以修改的。

 

3.3 插入文檔

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

3.4 查詢實現(xiàn)

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

返回結(jié)果(部分):

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

其中:"_percolator_document_slot” 指代的是:文檔position,從0開始計數(shù)。

4、percolator 查詢?nèi)绾螌崿F(xiàn)?

第一:通過使用DSL將用戶的待設(shè)置的預(yù)警條件構(gòu)造成Elasticsearch query語句,就好像它是一個文檔一樣,導(dǎo)入Elasticsearch索引。

第二:每次發(fā)布新文章時,都無需對其編入索引(索引化),就可以對其進行過濾,以了解文檔值是否達到閾值。

第三:根據(jù)返回結(jié)果_percolator_document_slot,決定是否預(yù)警及精確值預(yù)警。

上述內(nèi)容就是如何實現(xiàn)Elasticsearch Percolate 反向檢索,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI