題記percolator query 大家肯定在文檔中見過,但實際業務中則較少用到。 本文探究一下percolator query的使用方法、原理、適用場景。 1、什么是percolator查詢percolator中文含義:滲透器。 percolator query等價于滲透查詢或者反向查詢。 我們相信大多數Elasticsearch開發人員都會按照慣例進行思考,我們為數據建模并將其存儲在索引中。然后,他們通過搜索API定義查詢以檢索這些文檔。 percolator query 的原理則完全相反,如下圖所示: 您將查詢存儲到索引中,然后通過Percolate API定義文檔以檢索這些查詢。 也就是:
2、percolator 查詢的應用場景舉例:提供一個存儲用戶興趣的平臺,以便在每次有新內容進入時將正確的內容(通知警報)發送給正確的用戶。 舉例:用戶訂閱了特定主題,以便一旦該主題的新文章出現,就會向感興趣的用戶發送通知。 應用場景如下:
3、實戰一把3.1 實際業務需求閾值告警業務場景——當指定字段count值大于閾值時候,報警提示。 3.2 percolator mapping定義DELETE my-index 注意:percolator是等價于:keyword、long、Integer的數據類型。 "query": { 這種定義結構是不可以修改的。 3.3 插入文檔PUT /my-index/_doc/1 3.4 查詢實現GET /my-index/_search 返回結果(部分): { 其中:"_percolator_document_slot” 指代的是:文檔position,從0開始計數。 4、percolator 查詢如何實現?第一:通過使用DSL將用戶的待設置的預警條件構造成Elasticsearch query語句,就好像它是一個文檔一樣,導入Elasticsearch索引。 第二:每次發布新文章時,都無需對其編入索引(索引化),就可以對其進行過濾,以了解文檔值是否達到閾值。 第三:根據返回結果_percolator_document_slot,決定是否預警及精確值預警。 參考: [1] https://www./elasticsearch-percolator-query-implementation-in-ruby/ [2] https:///2019/11/14/how-percolate-queries-in-elasticsearch-make-alerting-a-breeze/ [3] https:///questions/21536599/what-does-percolator-mean-do-in-elasticsearch |
|