国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Elasticsearch Filter 緩存加速檢索的細節,你知道嗎?

云計算 云原生
Filter context 本身可以省去復雜的算分過程,再加上 Query Cache 的加速優勢,建議大家在編寫只需要匹配過濾查詢語句中優先選擇。

1、前言

ES 進行信息檢索的時候,boolean 查詢組合條件有 must/must_not/should/filter四個操作。

其中 must 和 filter 的用途都是用于過濾必要符合的條件,但是 filter 在查詢過程中不算分并且可以進行緩存,這樣邏輯簡單又可以加速的查詢方式經常得到官方的提倡。

可是,只有 filter 的條件可以被緩存么?這里的緩存是屬于哪一部分?

緩存有什么樣的進入和淘汰機制?怎么去監控緩存的使用情況?

這些問題也會伴隨著對 Elasticsearch 的深入使用自然而然的產生。

本文中,我們結合官方的一些資料進行探索。

2、什么是 Filter Context?

仔細去看官方的文檔可以發現,在 filter 的使用介紹里是這么寫的。

Filter clauses are executed in filter context, meaning that scoring is ignored and clauses are considered for caching.

這里不僅措辭嚴謹的說 filter 條件以 filter context 的方式執行,

并在如下官方鏈接做了詳盡解釋。

https://www.elastic.co/guide/en/elasticsearch/reference/current/query-filter-context.html#filter-context

簡而言之,filter context 主要用于查詢的過濾條件,并且不用算分,與 bool 的 filter 條件沒有嚴格關聯,除了 bool 的 filter 外,bool 中的 must_not, constant_score 查詢中的 filter,聚合中的 filter 也都屬于。

filter contextfilter context

3、如何進入 Query Cache

現在我們來看看查詢是怎么進入 Query Cache的:

3.1. 找到匹配文檔

在倒排索引中找到 filter 條件符合的詞項,并在所有的文檔中檢索這個詞項。

3.2. 建立一個位圖 bitset

建立一個只包含1和0的位圖 bitset,這個 bitset 用于描述所有文檔的匹配情況,匹配的文檔被設置為1。ES 實際執行時,使用的是 RoaringBitMap。

3.3. 迭代 bitset

一旦為某個查詢生成了 bitset, Elasticsearch 就會遍歷 bitset 以查找滿足所有過濾條件的匹配文檔集。

執行順序通常是首先迭代最稀疏的bitset(因為它排除了最多數量的文檔)。

3.4. 增加使用計數

把查詢條件和其結果的 bitset 組合作為 key-value 進行緩存,這里利用對查詢條件的使用記錄來判斷是否進緩存。

簡單來說,如果一個查詢在最近的256個查詢中被多次使用,它將被緩存在內存中。更為詳細的保留機制見下一節。

圖片圖片

4、Query Cache 的緩存機制

總體來說,Query Cache 是 Lucene 層面實現的,ES 層面會進行一些策略控制和信息統計。

Query Cache 僅應用于相對較大的 segment。

對于文檔數少于 1 萬或 segment 大小(size,單位:MB、GB等)小于整體索引大小 3% 的 segment(如下公式),Query Cache 將不啟用。

docs_count(segment) < 10000 || segment.size < 3%*index.size

因為小 segment 的查詢本身已經足夠快,不需要緩存來加速。

其管理策略類是 lucene 的 UsageTrackingQueryCachingPolicy,符合 LRU 的規則,也就是說 Query Cache 中的查詢結果長時間不被訪問會被優先淘汰。

這里判斷是否被緩存的方法是shouldCache(Query query),有興趣的同學可以去研究下

判斷是否可以緩存的主要規則如下:

  1. 判斷是否為 filter 查詢assert query instanceof BoostQuery == false;
  2. 命中永不緩存 shouldNeverCache 條件的淘汰,其中包括:TermQuery、MatchAllDocsQuery、MatchNoDocsQuery、以及子查詢為空的BooleanQuery、DisjunctionMaxQuery
  3. 某些大于特定閾值的查詢可以被緩存:3.1 大于2次:MultiTermQuery、MultiTermQueryConstantScoreWrapper、TermInSetQuery、PointQuery(在 isCostly方法中定義)3.2 大于5次:除了上面列出條件的所有 filter 查詢

5、使用和觀測 Query Cache

最后,我們來看下怎么去使用和觀測 Query Cache。

默認情況下節點的 Query cache最多緩存 10000個子查詢的結果,或者最多使用堆內存的10%,都可以通過配置來調整:

indices.queries.cache.count  #默認 10000
indices.queries.cache.size   #默認 10%

對 Query Cache 也可以進行人工清理:POST /<index>/_cache/clear?query=true

而 Nodes stats API 和 Index stats API 都提供了 Query Cache 的監控

"query_cache": {
  "memory_size_in_bytes": 1110305640,//使用的size
  "total_count": 45109997,//歷史查詢總條數 total=hit+miss
  "hit_count": 1192144,//命中的
  "miss_count": 43917853,//未命中的
  "cache_size": 1309,//當前緩存的條數
  "cache_count": 51509,//歷史緩存總條數
  "evictions": 50200//被驅逐的條數
}

使用小建議:

  1. 當 evictions 大量發生時,緩存被大量置換,對高敏感的業務可能會有一定的查詢抖動。
  2. 在監控項上添加一個 hit/total 的百分比監控,更加直觀。

6、小結

本文短暫總結了 Filter context 如何形成 Query Cache 并進行維護觀測的整體流程。

重點:Filter context 本身可以省去復雜的算分過程,再加上 Query Cache 的加速優勢,建議大家在編寫只需要匹配過濾查詢語句中優先選擇。

也就是:實際業務開發能使用 filter 過濾的,記得一定加上!

作者介紹

金多安,Elastic 認證專家,Elastic資深運維工程師,死磕Elasticsearch知識星球嘉賓,星球Top活躍技術專家,搜索客社區日報責任編輯。


責任編輯:武曉燕 來源: 銘毅天下Elasticsearch
相關推薦

2024-12-03 00:38:37

數據湖存儲COS

2023-01-16 08:09:51

SpringMVC句柄

2023-12-12 08:41:01

2022-09-29 15:32:58

云計算計算模式

2024-09-18 07:00:00

消息隊列中間件消息隊列

2021-10-14 06:52:47

算法校驗碼結構

2024-04-07 00:00:00

ESlint命令變量

2024-05-28 09:12:10

2019-12-12 09:23:29

Hello World操作系統函數庫

2022-03-10 08:25:27

JavaScrip變量作用域

2023-04-26 10:21:04

2023-12-20 08:23:53

NIO組件非阻塞

2024-04-30 09:02:48

2014-05-30 10:23:15

樂跑手環智能手環運動手環

2024-10-15 11:37:06

2020-10-08 18:58:46

條件變量開發線程

2024-06-03 14:27:08

ThisAPIThat

2024-06-20 08:06:30

2024-12-04 08:40:19

2021-10-28 16:19:37

物聯網人工智能IoT
點贊
收藏

51CTO技術棧公眾號

日韩成人av电影| 久久免费黄色| 欧美日韩一区视频| 亚洲中文字幕无码专区| 国产精品99一区二区三| 亚洲网站在线看| 黄视频在线观看免费| 99re成人在线| 亚洲欧洲一二三| 久久网站免费观看| 欧美激情免费在线| 成人免费看黄| 欧美一区二区国产| 日本h片在线看| 国产拍揄自揄精品视频麻豆| 亚洲ai欧洲av| 精品动漫av| 国产精品久久av| 久久视频免费| 亚洲视频一区二区| 黄色成人在线网| 欧美另类高清zo欧美| 中文字幕在线观看| 亚洲免费观看在线观看| 女人和拘做爰正片视频| 国产精品中文字幕欧美| 亚洲精品一区二| 亚洲一区一卡| 国产伦视频一区二区三区| 久久99性xxx老妇胖精品| 欧美激情一区二区久久久| 9i看片成人免费高清| 亚洲国产精久久久久久| fc2ppv国产精品久久| 欧美日韩国产精选| 97超碰人人在线| 欧美综合在线视频| 精品亚洲综合| 在线观看中文字幕不卡| 日本啊v在线| 一本一本大道香蕉久在线精品| 91短视频在线观看| 亚洲最新在线观看| 伊人网在线视频| 色婷婷精品久久二区二区蜜臀av | 欧美高清自拍一区| 中文字幕成人| 久久久91精品国产一区不卡| 国产91亚洲精品久久久| 日韩最新免费不卡| 日本精品在线播放| 78色国产精品| 欧美先锋资源| 99久久精品免费看国产四区| 亚洲看片一区| 成人手机视频在线| 99国产精品视频免费观看| 色哟哟精品视频| 亚洲在线观看免费| yjizz视频网站在线播放| 欧美一个色资源| 色多多在线观看| 在线视频国产日韩| 国产一区福利| 国产一区红桃视频| 羞羞答答国产精品www一本| 在线日韩av永久免费观看| 国产ts人妖一区二区| 免费的av电影| 欧美羞羞免费网站| 蜜桃麻豆影像在线观看| 久久精品视频导航| 激情综合网五月| 久久草视频在线看| 国产盗摄精品一区二区三区在线| 97国产在线播放| 亚洲不卡av一区二区三区| av中文天堂在线| 在线成人中文字幕| 国产一区二区三区91| 久久综合久久久| 高清日韩电视剧大全免费| 91污色多多| 日韩一级成人av| 日韩视频一区二区三区四区| 91精品视频免费| 国产乱人伦偷精品视频不卡| 黄色毛片视频| 精品福利一二区| 先锋影音国产精品| 日本一区二区三区www| 2020国产精品| 91高清在线| 欧美丰满片xxx777| 久久动漫亚洲| 国产又大又黄又猛| 91精品国产全国免费观看| 老司机亚洲精品一区二区| 国产精品一区二区你懂得| 91色视频在线| 综合图区亚洲| 国产精品mp4| 国产精品69毛片高清亚洲| 婷婷国产在线| 美女福利精品视频| 久久婷婷亚洲| 男人天堂免费视频| 亚洲社区在线观看| 亚洲激情影院| 国产免费视频| 国产一区二区三区在线| 欧美日韩免费观看一区=区三区| 99视频在线免费播放| 欧美日韩精品一区二区在线播放| 国产三级精品三级在线观看国产| 中文字幕日韩精品一区二区| 色综合一个色综合| 粉嫩av一区二区| 欧美 国产 精品| 欧美日韩高清在线播放| 国产成人高清| 国产精品少妇在线视频| 亚洲成人性视频| 亚洲网站在线| 中文日本高清免费| 九九精品在线视频| 国产一区二区三区精品视频| 成人性爱视频在线观看| 51ⅴ精品国产91久久久久久| 处破女av一区二区| 91福利区在线观看| 高清国产在线一区| 亚洲精品你懂的| 试看120秒一区二区三区| 在线观看av的网址| 欧美成人官网二区| 亚洲婷婷免费| 噜噜噜噜噜在线视频| 国产脚交av在线一区二区| 国产日韩欧美精品在线| 一区在线影院| 中文字幕乱码免费| 欧美精品一区二区在线观看| 亚洲在线视频| 免费a级人成a大片在线观看| 亚洲一区二区自拍| 色一区在线观看| 香蕉国产精品| 欧洲亚洲在线| 亚洲一区国产精品| 日韩欧美国产成人| 一区二区免费不卡在线| 日韩一区二区三区中文字幕| 国产区精品视频| 高跟丝袜一区二区三区| 色小子综合网| 欧美精品久久久久久久久久丰满| 国产一区二区香蕉| 91国在线观看| 国产色综合网| 在线不卡日本v二区707| 欧美日韩精品久久久免费观看| 91精品国模一区二区三区| 日本特黄久久久高潮| xxxxx性欧美特大| 国产精品一色哟哟| 欧美精品亚州精品| 国产精品福利av| 精品国产一区二区三区| 黄页网站免费在线观看| 91色视频在线观看| 欧美午夜电影在线播放| 久久精品一区二区国产| 超碰在线公开| 免费一级特黄特色毛片久久看| xxxxx成人.com| 国产精品麻豆久久久| 久久一级电影| 久久精品视频观看| 最新不卡av| 久久亚洲影音av资源网| 亚洲天堂精品在线观看| 亚洲精品国产偷自在线观看| 超碰在线caoporn| 国产精品第157页| 国产69久久精品成人| 在线免费观看成人短视频| 麻豆精品一二三| 日韩视频一区二区三区四区| 黄网站app在线观看下载视频大全官网 | www.国产一区| 国产精品欧美一区喷水| 久久精品播放| 欧美黑人猛交| 久久久久久久久久久久久国产精品| 日韩av电影手机在线| 91精品中文字幕一区二区三区 | 日韩免费在线视频| 欧美男生操女生| 成人av先锋影音|