详细描述一下 Elasticsearch 搜索的过程?
1、搜索被執(zhí)行成一個(gè)兩階段過(guò)程,我們稱(chēng)之為 Query Then Fetch;
2、在初始查詢(xún)階段時(shí),查詢(xún)會(huì)廣播到索引中每一個(gè)分片拷貝(主分片或者副本分
片)。 每個(gè)分片在本地執(zhí)行搜索并構(gòu)建一個(gè)匹配文檔的大小為 from + size 的
優(yōu)先隊(duì)列。
PS:在搜索的時(shí)候是會(huì)查詢(xún) Filesystem Cache 的,但是有部分?jǐn)?shù)據(jù)還在 Memory
Buffer,所以搜索是近實(shí)時(shí)的。
3、每個(gè)分片返回各自?xún)?yōu)先隊(duì)列中 所有文檔的 ID 和排序值 給協(xié)調(diào)節(jié)點(diǎn),它合并
這些值到自己的優(yōu)先隊(duì)列中來(lái)產(chǎn)生一個(gè)全局排序后的結(jié)果列表。
4、接下來(lái)就是 取回階段,協(xié)調(diào)節(jié)點(diǎn)辨別出哪些文檔需要被取回并向相關(guān)的分片
提交多個(gè) GET 請(qǐng)求。每個(gè)分片加載并 豐富 文檔,如果有需要的話,接著返回
文檔給協(xié)調(diào)節(jié)點(diǎn)。一旦所有的文檔都被取回了,協(xié)調(diào)節(jié)點(diǎn)返回結(jié)果給客戶(hù)端。
5、補(bǔ)充:Query Then Fetch 的搜索類(lèi)型在文檔相關(guān)性打分的時(shí)候參考的是本分
片的數(shù)據(jù),這樣在文檔數(shù)量較少的時(shí)候可能不夠準(zhǔn)確,DFS Query Then Fetch 增
加了一個(gè)預(yù)查詢(xún)的處理,詢(xún)問(wèn) Term 和 Document frequency,這個(gè)評(píng)分更準(zhǔn)確,
但是性能會(huì)變差。*
總結(jié)
以上是生活随笔為你收集整理的详细描述一下 Elasticsearch 搜索的过程?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: pyttsx3 快速上手之:语音合成播报
- 下一篇: 凹凸世界卡米尔资料图