elasticsearch(lucene)可以代替NoSQL(mongodb)嗎?

時間 2021-05-07 03:03:51

1樓:Banach Spaces

唔不知道為什麼有人說ES不慢?

難道是我單位配置的不對麼………我現在在我的單位會遇到過乙個情況是,在Metadata上搞查詢,用ES奇慢,那種比Mongo慢五倍的慢。

另外ES的資料不是即時的,而是「Near Real Time」,因此會遇到一些別的問題。

所以我個人還是不太推薦只用ES——當然你專案要是小就另說了。專案小的話大不了專案內部自己搞lock,慢五倍也不是什麼過分的慢。

2樓:josan

ES是搜尋引擎,不是儲存引擎。(為什麼叫建立index而不是table,也是這個原因)

ES存少量索引資料,資料特點(索引資料+需要聚合的資料),每個document盡量小點。

那涉及的儲存用什麼,推薦NoSQL(eg: Hbase, mongodb).

每次ES索引,拿到Key,然後再反查key-value DB,效率完爆傳統的關係型資料庫。

ES的靈活性+HBase等大容量儲存,這套組合,真的能解決企業的大部分查詢難題。

3樓:白秘籍·同粥共濟

這沒有可比性…乙個是full text search engine,乙個是nosql database。mongoDB能幹的有很多elasticsearch幹不了。

4樓:杉楓

不可以,深分頁場景ES效能極差,ES應該主要還是搜尋、以及目前正在加強的用於資料分析。做儲存有些深分頁查詢場景因效能無法使用。

5樓:netkiller

主要看場景。

我的用法是 MySQL -> logstash (jdbc plugin) --> Elasticsearch --> API --> HTML5 + Ajax

前端使用 AngularJS + HTML5 訪問 API。 API的作用是控制 Elaticsearch 許可權。

所有前端操作只經過 Elasticsearch ,不再訪問 MySQL。

6樓:junjielee

我是乙個初學者,個人感覺ES在可靠性,安全性方面還需要走很長的路。 用作查詢,ES無疑是更好的,且非常靈活。 MongoDB以及其生態感覺越來越完善,各取所長吧

7樓:realzyy

只要能滿足要求,無論什麼資料庫都可以,甚至可以用MySQL帶的Sphinx引擎。

不過題主如果覺得選擇太多的話,不妨把可用性、可靠性方面的要求也列出來。

8樓:老司機

簡單的說,對讀多寫少的儲存es是可以代替mongo的,特別是執行在SSD伺服器上時(傳統硬碟請不要用aggregation和sort,就算有了doc_values的es2也一樣不要用,就算你有再多的記憶體也不要用)

9樓:JingSQ

先說結論:ElasticSearch 完全滿足你目前的需求,但是如果以後需要資料處理,則僅僅乙個ElasticSearch無法滿足。

滿足的:

資料安全性:ElasticSearch的shard支援replication,乙份資料可以儲存多份,如果某一台機器掛掉了,資料在其他機器上還有,不用擔心丟失。

訪問安全性:ElasticSearch支援驗籤,不用擔心未授權的訪問。

遷移特性:ElasticSearch支援眾多的外掛程式,在和其他開源系統之間匯入,匯出資料都很簡單。

資料完整性:ElasticSearch支援儲存資料原文。

適合你的場景:抓取系統抓取到的資料直接存入ElasticSearch,然後查詢

不滿足的:

一般情況下抓取系統抓取到的資料不能直接用來查詢,需要經過各種處理之後,才會去搜尋,這時候,僅僅乙個ElasticSearch就不夠了,最好先把抓取到的資料儲存到乙個NoSQL資料庫中,然後對資料做處理,最後將資料放到ElasticSearch中去搜尋。

實踐:抓取到的資料先存到阿里雲的OTS(開放結構化資料服務OTS_海量資料儲存)中,然後用ODPS處理資料,完了後推送給OpenSearch,然後就可以查詢了。這時候,你的精力和時間只需要關注資料處理的演算法即可。

10樓:amancast

目前我們使用3臺機器,3個ES節點,5個Redis例項輔助ES,ES沒有開備份節點,儲存資料行數在15億左右,每個節點20G記憶體,目前每月增量資料2.5億左右,一般情況下,如果沒有大的統計查詢,記憶體穩定在2-6G。

11樓:白喬

。。。這分明是2個東西好麼?

es是用來做檢索的

mongodb是用來做管理的

完全也可以mongodb存資料內容,es做它的索引啊!

12樓:潘飛

我們使用Elasticsearch儲存的文件數量接近50億(算上1份複製,接近100億文件),總共10個資料節點和2個元資料節點(48GB記憶體,8核心CPU,ES使用記憶體達到70%),每天的文件增量大概是3000W條(速度持續增加中)。目前來看,單個文件的查詢效率基本處於實時狀態;對於1到2周的資料的聚合統計操作也可以在10秒之內返回結果。

但是,還有提公升的空間:

1. 對於查詢單條資料的應用場景來說,我們可以使用ES的路由機制,將同一索引內的具有相同特徵(比如具有相同的userid)的文件全部儲存於乙個節點上,這樣我們之後的查詢都可以直接定位到這個節點上,而不用將查詢廣播道所有的節點上;

2. 隨著資料節點的增加,適當增加分片數量,提公升系統的分布水平,也可以通過分而治之的方式優化查詢效能;

個人以為Elasticsearch作為內部儲存來說還是不錯的,效率也基本能夠滿足,在某些方面替代傳統DB也是可以的,前提是你的業務不對操作的事性務有特殊要求;而許可權管理也不用那麼細,因為ES的許可權這塊還不完善。由於我們對ES的應用場景僅僅是在於對某段時間內的資料聚合操作,沒有大量的單文件請求(比如通過userid來找到乙個使用者的文件,類似於NoSQL的應用場景),所以能否替代NoSQL還需要各位自己的測試。如果讓我選擇的話,我會嘗試使用ES來替代傳統的NoSQL,因為它的橫向擴充套件機制太方便了。

在我的工作過程中,我深切體會到:經驗固然是乙個很重要的東西,因為它能夠幫助我們少走很多彎路,但同時也應該看到經驗的另一面——它會變成乙個籠子,將我們閉塞其中,使我們錯過一些可能更好的解決方案,關鍵是我們要學會嘗試,接觸新的世界。

什麼可以代替抽菸

倔強的小刺蝟 如煙我記得很多年前有個這個產品。那個味道,至今難忘。不但煙可以戒,飯都不想吃了。堅持了幾天直接放棄,重新抽菸。現在我差不多一周一包煙,其他時間抽熱沫電子煙。乙個哥們送的,這個東西裡面據說也有尼古丁,反正能解癮就一直在抽,感覺比香菸味道選擇面廣,口裡面也不會有氣味,挺好。充電1次頂2天,...

node js可以代替php嗎?

Lcwai 1 後端語言無分好壞,自己喜歡,寫起來順手就好 2 建議你還是再深入學習node,期間自己寫些小專案練手,玩熟了就可以拿大點的專案試下 安靜地吹牛 1.學不會php的程式設計師卻能學會js不存在的。php是世界上最簡單樸實的程式語言。2.如果需求只是簡單增刪改查可以用各種能做http r...

打坐可以代替午睡嗎?

李然 程式猿乙隻。打坐替代午休差不多幾個月吧。之前午睡用床,睡的時候偶爾打鼾,起床之後會提不起勁工作,蠻影響工作狀態。最可怕的是.我午休時間,如果睡的香,夢魘的概率爆高.這裡求大師指點.後來在公司學了太極,受到啟發,午間打坐時,通過起手式調整呼吸,把心悸的感覺慢慢壓下去 不知道你們會不會,我開始靜坐...