Elasticsearch的NRT優化,近實時查詢

2021-09-02 05:29:03 字數 709 閱讀 1647

現有流程的問題,每次都必須等待fsync將segment刷入磁碟,才能將segment開啟供search使用,這樣的話,從乙個document寫入,到它可以被搜尋,可能會超過1分鐘!!!這就不是近實時的搜尋了!!!主要瓶頸在於fsync實際發生磁碟io寫資料進磁碟,是很耗時的。

寫入流程別改進如下:

(1)資料寫入buffer

(2)每隔一定時間,buffer中的資料被寫入segment檔案,但是先寫入os cache

(3)只要segment寫入os cache,那就直接開啟供search使用,不立即執行commit

資料寫入os cache,並被開啟供搜尋的過程,叫做refresh,預設是每隔1秒refresh一次。也就是說,每隔一秒就會將buffer中的資料寫入乙個新的index segment file,先寫入os cache中。所以,es是近實時的,資料寫入到可以被搜尋,預設是1秒。

post /my_index/_refresh,可以手動refresh,一般不需要手動執行,沒必要,讓es自己搞就可以了

比如說,我們現在的時效性要求,比較低,只要求一條資料寫入es,一分鐘以後才讓我們搜尋到就可以了,那麼就可以調整refresh interval

ElasticSearch的工作機制

elasticsearch,和solr一樣,是底層基於apache lucene,且具備高可靠性的企業級搜尋引擎。elasticsearch中的一些概念其實和關係型資料庫都有對應關係,比如資料庫在es中被稱為索引,表在es中被稱作type。具體對應關係見下表。elasticsearch中的repli...

ElasticSearch的工作機制

elasticsearch,和solr一樣,是底層基於apache lucene,且具備高可靠性的企業級搜尋引擎。elasticsearch中的一些概念其實和關係型資料庫都有對應關係,比如資料庫在es中被稱為索引,表在es中被稱作type。具體對應關係見下表。elasticsearch中的repli...

Elasticsearch的基本使用

一,介紹 2015年就在專案中接觸到elasticsearch,但是一直沒有深入研究,第一感覺沒有sql好弄,大概是sql用的時間長了,現在工作之餘有些閒暇時間了,所以研究了下,好,下面就玩起來 二,基本概念 官網學習資料,英文的 elasticsearch權威指南,中文翻譯,在此謝謝翻譯者 三,d...