ElasticSearch7.3學習(二十五)----Doc value、query phase、fetch phase解析
1、Doc value
搜尋的時候,要依靠倒排索引;
排序的時候,需要依靠正排索引,看到每個 document
的每個 field
,然後進行排序。
所謂的正排索引,其實就是 doc values
。
在建立索引的時候,一方面會建立倒排索引,以供搜尋用;一方面會建立正排索引,也就是 doc values
,以供排序,聚合,過濾等操作使用,
doc values
是被儲存在磁碟上的,此時如果記憶體足夠,os會自動將其快取在記憶體中,效能還是會很高;如果記憶體不足夠,os會將其寫入磁碟上
1.1 倒排索引
doc1: hello world you and me
doc2: hi, world, how are you
term | doc1 | doc2 |
---|---|---|
hello | * | |
world | * | * |
you | * | * |
and | * | |
me | * | |
hi | * | |
how | * | |
are | * |
搜尋時:
hello you --> hello, you
hello --> doc1
you --> doc1,doc2
sort by
出現問題,如果需要自定義排序(按照某些欄位排序)那麼就會出現問題,因為倒排索引已經被分詞了。,此時就需要使用正排索引來進行分詞
1.2 正排索引
doc1: { "name": "jack", "age": 27 }
doc2: { "name": "tom", "age": 30 }
document | name | age |
---|---|---|
doc1 | jack | 27 |
doc2 | tom | 30 |
2、文件查詢
關於文件的查詢過程,前面部落格已經解析過了: ElasticSearch7.3學習(六)----文件(document)內部機制詳解
這裡再簡單的回顧一下。分為兩個步驟,第一 query
,第二 fetch
。
2.1 query
2.1.1 query phase
(1)搜尋請求傳送到某一個coordinate node,構構建一個priority queue,長度以paging操作from和size為準,預設為10
(2)coordinate node將請求轉發到所有shard,每個shard本地搜尋,並構建一個本地的priority queue
(3)各個shard將自己的priority queue返回給coordinate node,並構建一個全域性的priority queue
2.1.2 replica shard提升搜尋吞吐量
一次請求要打到所有shard的一個replica/primary上去,如果每個shard都有多個replica,那麼同時併發過來的搜尋請求可以同時打到其他的replica上去
2.2 fetch
2.2.1 fetch phase
(1)coordinate node構建完priority queue之後,就傳送mget請求去所有shard上獲取對應的document
(2)各個shard將document返回給coordinate node
(3)coordinate node將合併後的document結果返回給client客戶端
- 【演算法篇】刷了兩道大廠面試題,含淚 ”重學陣列“
- 2022 開源軟體安全狀況報告:超 41% 的企業對開源安全沒有足夠的信心
- JavaScript中async和await的使用以及佇列問題
- Flex & Bison 開始
- Obsidian基礎教程
- 分享自己平時使用的socket多客戶端通訊的程式碼技術點和軟體使用
- iNeuOS工業網際網路作業系統,增加2154個檢視建模(WEB組態)行業向量圖元、大屏背景及相關圖元
- 多臺雲伺服器的 Kubernetes 叢集搭建
- Elasticsearch學習系列四(聚合搜尋)
- 關於swiper外掛在vue2的使用
- 使用 Abp.Zero 搭建第三方登入模組(一):原理篇
- LVGL庫入門教程 - 顏色和影象
- Node.js精進(4)——事件觸發器
- 物聯網?快來看 Arduino 上雲啦
- SpringBoot JWT Redis 開源知識社群系統
- CVPR2022 | 可精簡域適應
- Spring框架系列(3) - 深入淺出Spring核心之控制反轉(IOC)
- 面試突擊59:一個表中可以有多個自增列嗎?
- CVPR2022 | 弱監督多標籤分類中的損失問題
- JDBC、ORM、JPA、Spring Data JPA,傻傻分不清楚?一文帶你釐清箇中曲直,給你個選擇SpringDataJPA的...