首先让我们澄清一下术语:
- Node :一个正在运行的Elasticsearch实例(一个Java进程)。通常,每个节点都在自己的计算机上运行。
- 群集 :一个或多个具有相同群集名称的节点。
- 索引 :或多或少像数据库。
- 类型 :或多或少像数据库表。
- 碎片 :实际上是一个lucene索引。每个索引由一个或多个分片组成。分片可以是主分片(或简称为分片)或 副本 。
创建索引时,可以指定分片数和每个分片的副本数。默认值为5个主分片,每个分片1个副本。分片会自动均匀地分布在集群中。副本分片将永远不会在相关主分片所在的同一机器上分配。
您在集群状态中看到的内容很奇怪,建议您使用get settings
API来检查索引设置。看起来您仅配置了一个分片,但是如果您有多个索引,无论如何您应该会看到更多的分片。如果您需要更多帮助,则可以发布从elasticsearch获得的输出。
实际使用多少个分片和副本取决于您的数据,访问它们的方式以及可用节点/服务器的数量。最佳做法是稍微分片以便在您向集群中添加更多节点时重新分配分片,因为一旦创建索引,就无法(现在)更改分片的数量。否则,如果您愿意对数据进行完整的索引编制,则可以随时更改分片的数量。
由于每个分片实际上都是Lucene实例,因此每个附加分片都需要付费。每台计算机可以拥有的最大分片数量实际上取决于可用的硬件以及您的数据。很高兴知道,每个分片具有100个索引,或者一个分片具有100个索引,实际上是相同的,因为在两种情况下,您都有100个Lucene实例。
当然,在查询时,如果您要查询由100个分片组成的单个Elasticsearch索引,elasticsearch将需要全部查询它们才能获得正确的结果(除非您为文档使用特定的路由,然后仅查询特定的分片)。这将产生性能成本。
您可以使用“ 群集节点信息”
API轻松检查群集和节点的状态,通过它可以检查很多有用的信息,这是您需要的所有信息,以便知道节点是否运行顺畅。更简单的是,有两个插件可以通过一个不错的用户界面(无论如何内部都使用Elasticsearch API)检查这些信息:paramedic和bigdesk。



