ES重建索引 reindex 效能優化建議

2022-02-01 20:45:03 字數 1432 閱讀 7038

reindex的核心做跨索引、跨集群的資料遷移。 

慢的原因及優化思路無非包括:

預設情況下,_reindex使用1000進行批量操作,您可以在source中調整batch_size。

post _reindex

, "dest":

}

批量大小設定的依據:

reindex支援sliced scroll以並行化重建索引過程。 這種並行化可以提高效率,並提供一種方便的方法將請求分解為更小的部分。

1)用過scroll介面吧,很慢?如果你資料量很大,用scroll遍歷資料那確實是接受不了,現在scroll介面可以併發來進行資料遍歷了。 

2)每個scroll請求,可以分成多個slice請求,可以理解為切片,各slice獨立並行,利用scroll重建或者遍歷要快很多倍。

slicing的設定分為兩種方式:手動設定分片、自動設定分片。 

手動設定分片參見官網。 

自動設定分片如下:

post _reindex?slices=5&refresh

, "dest":

}

slices大小設定注意事項: 

1)slices大小的設定可以手動指定,或者設定slices設定為auto,auto的含義是:針對單索引,slices大小=分片數;針對多索引,slices=分片的最小值。 

2)當slices的數量等於索引中的分片數量時,查詢效能最高效。slices大小大於分片數,非但不會提公升效率,反而會增加開銷。 

3)如果這個slices數字很大(例如500),建議選擇乙個較低的數字,因為過大的slices 會影響效能。

如果要進行大量批量匯入,請考慮通過設定index.number_of_replicas來禁用副本:0。 

主要原因在於:複製文件時,將整個文件傳送到副本節點,並逐字重複索引過程。 這意味著每個副本都將執行分析,索引和潛在合併過程。 

相反,如果您使用零副本進行索引,然後在提取完成時啟用副本,則恢復過程本質上是逐字節的網路傳輸。 這比複製索引過程更有效。

put /my_logs/_settings

如果你的搜尋結果不需要接近實時的準確性,考慮先不要急於索引重新整理refresh。預設值是1s,在做reindex時可以將每個索引的refresh_interval到30s或禁用(-1)。 

如果正在進行大量資料匯入,reindex就是此場景,先將此值設定為-1來禁用重新整理。完成後再重置回需要的值! 

設定方法:

put /index_name/_settings

還原方法:

put /index_name/_settings

es重建索引

索引的資料型別一旦建立時不可以修改的 put my index my type 10 查詢 get my index my type search 嘗試插入文字格式的資料,但是報錯 put my index my type 2 重建乙個新的索引 put my index new source all...

pandas資料新索引 reindex

dataframe.reindex labels none,index none,columns none,axis none,method none,copy true,level none,fill value nan,limit none,tolerance none 常用關鍵引數 metho...

es重建字段型別 ES索引建立 新增與修改字段

推薦使用kibana進行dsl編寫,有 提示與糾正 提示給跟我一樣的小白 建立索引並配置 number of shards為資料分片,預設值為5 number of replicas為資料備份數,如果只有一台機器,建議設定為0,避免索引一直處於yellow狀態 注 該設定建立索引後無法修改 我記得是...