2014-01-10 15 views

回答

22

ElasticSearch實現了許多更多功能,例如將文本自定義分割爲單詞,自定義詞幹,多面搜索以及更多功能。儘管MongoDB(相當簡單)的文本搜索可以完成其中的一部分功能,但它並不像ElasticSearch那麼強大。

如果您所做的只是在單個字段中查找單個字符串,那麼MongoDB的普通查詢系統將非常出色。如果您需要在多個字段中查找單詞,則MongoDB的文本搜索將起作用。如果您還需要其他更多的東西,ElasticSearch就是您的選擇。

3

Derick的回答幾乎指甲。所有這些背後的問題是:

你想在你的應用程序中實現什麼功能?

如果您依賴大量文本中的大量搜索功能,ElasticSearch可能是一件好事。如果你想擁有一個靈活的數據存儲來處理複雜的臨時查詢,Mongo可能會非常適合。如果您對數據存儲的要求不同,將兩個工具結合使用通常是件好事,而不是實現所有類型的解決方法,以使其只與一個數據存儲一起工作。

爲工作選擇合適的工具。

11

搜索引擎和數據庫做了一些根本不同的事情。一個好的搜索引擎(如ElasticSearch)支持更復雜的索引,方面,突出顯示等。在ElasticSearch的情況下,您也可以實時獲得您的回覆。另一方面,搜索引擎不會返回與您的查詢匹配的每個文檔。相反,它會根據它們的匹配程度對文檔進行評分,並返回評分最高的文檔。當你查詢MongoDB等數據庫時,你應該預期它會返回所有與你的查詢匹配的

可以將整個文檔存儲在ElasticSearch中,但它通常不是最佳解決方案。通常情況下,您將它配置爲返回文檔ID,用於從數據庫中提取文檔。 MongoDB是針對基於文檔的存儲優化的數據庫。這就是爲什麼你聽說有人在一起使用它們。

編輯:

當這個被張貼,它匹配的建議,但是這可能不再是這種情況。

+0

你可以提供一個用例嗎?我不覺得最好的解決方案是同時使用nosql來實現一些特殊的功能嗎? –

相關問題