2014-01-06 33 views
0

我正在嘗試在其中一個應用程序中使用Lucene進行OLTP處理,這需要實時搜索和事務處理功能。爲什麼Lucene不提供實時搜索並且提交緩慢?

我一直在圍繞Apache Solr,Elastic Search和Lucene進行廣泛的調試,並試圖理解,爲什麼Lucene提交代價昂貴,爲什麼沒有實時搜索,但只有NRT。

回答

0

Q>爲什麼Lucene的提交很貴?
A>因爲它處理I/O。除其他外,它必須執行fsync(),編寫新的segments_N文件,將刪除的文檔寫入磁盤,合併等等。

Q>爲什麼沒有實時搜索,但只有NRT?
A>因爲這是如何設計Lucene的API:IndexSearcher只是包含所有數據的IndexReader上的一個薄層。

您可能想要閱讀this article以獲取有關內部的更多詳細信息。

+0

好的。讓我們假設我們想要爲每個文檔索引進行提交,所以我認爲不會有任何合併,讓我們也將段數保持爲1。談到I/O,我不相信這樣會增加很多延遲。與典型的磁盤寫入和數據庫提交(如Cassandra或Mysql)相比,它非常昂貴。 –

+0

我認爲您的意見僅在您向我們提供包含_some_數字的分析/基準時纔有效。慢/昂貴是一個模糊的術語。 – mindas

+0

是的,同意我使用Solr運行了一些基準測試,並提交了每個文檔索引,它導致了大約8 TPS,而批量提交時,它可以變得巨大,直到3000 OPS或更多。 –

相關問題