2012-10-16 68 views
2

對不起,模糊的標題,沒有什麼更好的擬合。彈性搜索和「數據庫」

我在探索彈性搜索,它看起來很酷。我的問題是概念,因爲我習慣於sql。

在Sql中,你有不同的數據庫,並且你在那裏存儲每個應用程序的數據。 ES中是否存在相同的概念?或者是所有我的應用程序的所有數據都會在同一個地方出現?在那種情況下,避免不合格數據產生不良結果的最佳做法是什麼?

+0

我不是在這裏解釋你的問題。 「所有的數據都在同一個地方」,你指的是彈性搜索的無模式性質還是具體的關注點?還有什麼你的意思是「不合格的數據」? – jsalonen

+0

假設您發送來自2個類似網站的數據,這些網站或多或少具有相同類型的表 - 比如說博客。在sql中,你創建了兩個不同的數據庫,數據位於不同的地方。如果你需要站點A的用戶表,你可以連接到dbA等。ES中是否有類似的概念? – johnjohn

回答

3

無模式並不意味着無結構:

  • 在彈性搜索,你可以組織你的數據轉換成文檔集合
  • 頂級文檔集合大致相當於一個數據庫
  • 您也可以按層次在頂級集合中創建新的文檔集合,這與數據庫表格非常相似
  • 當您搜索文檔時,您將搜索特定文檔集合中的文檔(例如搜索特定文檔集合中的文檔請注意,我說的大致相當 - SQL中的數據通常按關係標準化爲表格,而文檔(在ES中)通常掌握大量的數據實體。例如,將所有註釋嵌入博客文檔中通常是有意義的,而在SQL中,您可以將註釋和博文標準化爲單獨的表格。

對於一個很好的教程,我建議看看"ElasticSearch in 5 minutes"教程。

+1

我看過燈! :)謝謝,現在一切都很有意義。 – johnjohn

3

從SQL切換到搜索引擎時有時會遇到挑戰。 Elasticsearch有一個索引的概念,可以大致映射到一個數據庫和類型,它可以非常粗略地映射到一個表。 Elasticsearch具有非常強大的選擇單一類型記錄(行)的機制,並結合了來自不同類型和索引(聯合)的結果。但是,目前還沒有支持加入。 elasticsearch支持的唯一關係是has_child,但它不適合建模多對多關係。因此,在大多數情況下,您需要準備好對數據進行非規範化處理,以便將其存儲在單個表中。

+0

非常感謝您的回覆! – johnjohn