elasticsearch 允许的最大索引数是多少?

What is the maximum number of indices allowed in elasticsearch?

我正在使用 MySQL 在我的软件中存储数据。我们必须使用这些数据生成数百份报告,并且随着数据量的增加,它会花费更多的时间。对于某些报告,需要 1 或 2 分钟。所以我们决定使用 NoSQL 数据库而不是 MySQL。我们决定使用 Elasticsearch。

在MySQL中,我们每个客户端都有不同的数据库,每个数据库里面有超过50个tables。在使用 Elasticsearch 时,我无法在数据库下对索引进行分组。所以我决定创建单独的索引,将客户名称作为前缀。例如,在 MySQL 中有两个名为 ABCDEF 的数据库和一个名为 ledger 的 table。在 Elasticsearch 中做同样的事情是创建一个名称为 ABC_ledgerDEF_ledger.

的索引

在 MySQL 中,单个客户端数据库有 50 个 table,因此当转换为 Elasticsearch 时,单个客户端将有 50 个索引。因此,当添加新客户时,将创建额外的 50 个索引。

我的问题是:

  1. 我们可以创建的索引数量有限制吗?
  2. 有没有其他方法可以在不创建单独索引的情况下实现上述逻辑?

我会尽量回答你的第一个问题。

  1. 首先,Elasticsearch中的索引只是主分片和副本分片的逻辑分组(这些分片实际上是分配在Elasticsearch集群的节点上)。 有两个配置,控制集群或数据节点内可以有多少分片。

第一个叫做cluster.max_shards_per_node的应用在集群级别,它限制了集群中的分片总数,与集群中的节点无关,默认设置为1000。在 cluster module 和 same

阅读更多内容

  1. 第一个是不够的,因为它没有限制节点级别的分片数量,而是将其限制在集群级别,这会在集群中造成不平衡,以防止您可以在节点级别设置分片数。在 official document
  2. 阅读更多内容