我正在使用 MySQL 在我的軟體中存盤資料。我們必須使用這些資料生成數百份報告,并且隨著資料量的增加,它需要更多的時間。對于某些報告,它需要 1 或 2 分鐘。所以我們決定使用 NoSQL 資料庫而不是 MySQL。我們決定使用 Elasticsearch。
在 MySQL 中,每個客戶端都有不同的資料庫,每個資料庫內部有 50 多個表。來到 Elasticsearch 時,我無法在資料庫下對索引進行分組。所以我決定創建單獨的索引,并將客戶端名稱作為前綴。例如,在 MySQL 中有 2 個名為 的資料庫ABC,DEF以及兩個名為 的表ledger。在 Elasticsearch 中所做的同樣的事情是通過創建一個名為ABC_ledger和的索引DEF_ledger。
在 MySQL 中,單個客戶端資料庫有 50 個表,因此在轉換為 Elasticsearch 時,單個客戶端的索引將是 50 個。因此,當添加新客戶端時,將創建額外的 50 個索引。
我的問題是:
- 我們可以創建的索引數量是否有限制?
- 有沒有其他方法可以在不創建單獨索引的情況下實作上述邏輯?
uj5u.com熱心網友回復:
我會試著回答你的第一個問題。
- 首先,Elasticsearch 中的索引只是主分片和副本分片的邏輯分組(這些分片實際上分配在 Elasticsearch 集群的節點上)。有兩個配置,用于控制集群或資料節點內可以有多少分片。
第一個呼叫cluster.max_shards_per_node應用于集群級別,它限制集群中的分片總數,而與集群中的節點無關,默認設定為1000. 
- 第一個是不夠的,因為它沒有限制節點級別的分片數量,而是將其限制在集群級別,這可能會在集群中造成不平衡,以防止您可以在節點級別設定分片數量。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/463948.html上一篇:集群對彈性堆疊重要嗎?
