2013-12-18 34 views
9

我正在學習彈性搜索,但仍然有很多我沒有得到,但有一件事我不明白(或找到所有這些)是什麼時候使用一個索引,以及何時使用更多。其中一部分是我絕對沒有得到什麼,確切地說,彈性搜索索引彈性搜索 - 何時使用其他索引?

你能解釋什麼是彈性搜索索引,什麼時候你應該只用一個來存儲所有數據,以及什麼時候應該將數據分成多個索引?

獎勵積分/或者,我該如何判斷何時需要將我的數據拆分爲多個索引,然後,我該如何決定如何在新索引之間拆分數據?

回答

13

您可以將其視爲SQL數據庫中的模式。

模式可以有許多表。索引可以有多種類型。

很酷的是,可以在一個請求中對多個索引進行搜索。

如果沒有關於用例的任何信息,很難告訴您更多信息。 這取決於很多因素:你需要在一段時間後刪除一些數據(比方說每年)?您將索引多少個文檔以及文檔的大小是多少?

例如,假設您要索引日誌並保持3個月的日誌。基本上每個月會創建一個索引,並在3個當前月份的頂部創建一個別名。

當一個月結束時,爲新月份創建新索引,修改別名並刪除舊索引。刪除索引是有效的性能和磁盤空間明智!

所以基本上在這種情況下,我會建議使用多個索引。

想象一下另一種情況。假設你正在推出一款遊戲,而且你不知道你是否會成功。因此,從只有一個分片的index1開始,並在其上創建一個別名索引。您啓動遊戲並發現隨着響應時間急劇增加,您將需要更多功率(更多機器)。用兩個分片創建一個新索引index2並將其添加到您的別名索引。

這種方式可以輕鬆地擴展。

這裏的關鍵是恕我直言的別名。在項目開始時使用別名進行搜索。它將在未來幫助你很多。

另一個用例可能是您正在爲不同的客戶工作。客戶不希望將他們的數據與其他客戶混合在一起。那麼您可能需要在這種情況下爲每個客戶創建一個索引?

事實是,elasticsearch非常靈活,可以幫助您根據需要設計您的架構。

希望這會有所幫助。

+0

我想這聽起來很像是,每個類型是表格,但仍然無法幫助我決定什麼時候有一個以上的意思,因爲我幾乎從不決定在單個數據庫中擁有多組表。 – Narfanator

+0

答覆已更新。 – dadoonet

+0

謝謝!這是我一直在尋找的信息。 – Narfanator

1

elasticsearch中最大的單個數據單元是index。索引是elasticsearch中文檔的邏輯和物理分區。

Elasticsearch indexes與關係世界中的database抽象最相似。elasticsearch index是單個正在運行的服務器實例中的完全分區的Universe。文檔和類型映射的範圍爲index,因此可以安全地在indexes之間重新使用名稱和ID。索引也有自己的設置羣集複製,分片,自定義文本分析,以及許多其他問題。

供您參考: - Shards and replicas in Elasticsearch

+0

謝謝!您是否可以詳細瞭解何時需要跨多個索引分割數據,即使數據具有相同的模式? – Narfanator

+0

您不能將數據拆分爲多個索引。索引分爲多個分片,您可以在配置文件中定義索引的分片數量。 – Roopendra

+0

[請參閱此論壇](http://elasticsearch-users.115913.n3.nabble.com/increasing-shards-and-then-nodes-td2288848.html#a2289760)。這可能有助於瞭解何時應增加碎片和節點 – Roopendra

0

指數是ElasticSearch的主要數據存儲單元。

有幾種類型的數據存儲技術:

分區: 比方說你有一個不斷增長的和不斷增長的永不停歇的索引。 (即fb/twitter數據或任何類型的日誌記錄)。將這些類型的數據分區數據存儲到多個索引中的最佳方法。通常的做法是使用時間間隔。時間間隔可能不同。它可能是每月,每週,每天。然後,當您獲取新數據時,請檢查時間戳並移至相應的索引。

無分區: 如果您的索引增長速度不快,您可以使用單一索引。這對小桌子很有用。

有許多方法可以管理您在探索Elastic Search時可以學習的數據。