2014-09-05 43 views
0

我是elasticsearch的新手,但並不真正知道如何考慮磁盤空間&設置河流(我的情況是一條mysql河)涉及的內存使用情況。elasticsearch河的開銷?

河流的開銷是多少?尤其是關於磁盤空間&的內存使用情況?This has been asked但未回答。換句話說,假設我有一個有3列的表:primary_key(integer),url(varchar)和document_text(text)。另外,假設我目前在mysql中進行全文搜索100%(愚蠢,我知道,但僅僅是爲了爭辯)。 3列中的每一列都有一個索引,「document_text」索引是全文索引。這是一個非常大的表格,我想盡量減少重複的數據。

我應該怎麼考慮發生了什麼事情與一個mysql河? 隨着一條河,我會直接從「document_text」列刪除全文索引 &移動到elasticsearch(以及來自mysql的primary_key)? Elasticsearch不需要爲「url」編制索引,因爲我們沒有在這方面搜索,對嗎? document_text的數據存儲在mysql中,但索引存儲在elasticsearch中,因此實際使用的磁盤空間增加了零。

編輯:

我想我的主要問題是將我兩次存儲底層數據或不elasticsearch只存儲索引?

回答

1

默認情況下,Elasticsearch會創建一個名爲「_source」的字段,其中包含提交給索引的所有json格式的源數據。這是文檔數據將從當查詢Elasticsearch檢索:

_source

的_source字段是存儲被用作索引的文檔的實際 JSON自動生成的場。它沒有索引 (可搜索),只是存儲。當執行「獲取」請求時,如獲取 或搜索,默認情況下會返回_source字段。

儘管非常方便,但源域確實會在索引內產生開銷 開銷。出於這個原因,它可以被禁用。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-source-field.html

,如果你願意,你可以關閉這個功能,但是這意味着,除非你再存儲各個字段的查詢將不會返回完整的文檔。

我需要更多地瞭解你的具體用例,以知道你是否應該在mysql中刪除你的全文索引,但總的來說,使用Elasticsearch mysql River的主要原因是爲了方便文本搜索爲什麼這兩個?

另外兩個想法給你。首先,除了測試和開發之外,我會避免在與MySQL相同的服務器上運行ES - 它們將相互競爭cpu,磁盤空間,尤其是內存,並且在同一臺服務器上使它們很難調整。其次,無論你做什麼,如果你要索引一大組文件,你將佔用一些重要的空間。您可以通過播放_source字段來限制這一點,但最終ES索引需要爲每個令牌和它的位置編制索引 - 它不如存儲整個文檔,但它佔用的數據量不是很大。多少將取決於您的文檔 - 您需要運行測試索引與您的特定設置(字段類型,分析鏈和合理的數據樣本)來確定粗略的磁盤使用情況。