ES index type 概述


 

1、index、type的初衷

之前es將index、type類比於關系型數據庫(例如mysql)中database、table,這么考慮的目的是“方便管理數據之間的關系”。

 

2、為什么現在要移除type?

2.1 在關系型數據庫中table是獨立的(獨立存儲),但es中同一個index中不同type是存儲在同一個索引中的(lucene的索引文件),因此不同type中相同名字的字段的定義(mapping)必須一致。

2.2 不同類型的“記錄”存儲在同一個index中,會影響lucene的壓縮性能。

 

3、替換策略

3.1 一個index只存儲一種類型的“記錄”

這種方案的優點:

a)lucene索引中數據比較整齊(相對於稀疏),利於lucene進行壓縮。

b)文本相關性打分更加精確(tf、idf,考慮idf中命中文檔總數)

3.2 用一個字段來存儲type

如果有很多規模比較小的數據表需要建立索引,可以考慮放到同一個index中,每條記錄添加一個type字段進行區分。

這種方案的優點:

a)es集群對分片數量有限制,這種方案可以減少index的數量。

 

4、遷移方案

之前一個index上有多個type,如何遷移到3.1、3.2方案?

4.1 先針對實際情況創建新的index,[3.1方案]有多少個type就需要創建多少個新的index,[3.2方案]只需要創建一個新的index。

4.2 調用_reindex將之前index上的數據同步到新的索引上。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM