我在一台服务器上安装了elasticsearch。我想知道当数据非常大时,是否有必要将num_of_shards
设置为大于1?我假设我将num_of_shards
设置为大于1,但这些分片是在一个磁盘中。当我搜索某些东西时,任务被分配给那些碎片。性能可能低于这个场景设置num_of_shards
等于1,我的观点有什么问题吗?
暂时,我只有一台服务器可用。
每个分片下面都是一个完整的Lucene索引,并且对于弹性搜索服务请求,它需要按顺序查询每个分片。虽然如果使用SSD可以减轻性能影响,但仍然会影响性能。通常,分片的数量保持多于群集中的节点,因为稍后如果要增加分片数量,则需要重新索引整个数据,这在某些情况下是不可行的。 This文章很好地解释了这一点。
我会做一个碎片+一个副本(可能是不同的驱动器),可能有一些理由根据您的使用情况和数据分布进行多个分片 - 但对于大多数情况下,一个碎片应该没问题。
如果您将来添加更多服务器/数据,则较新版本的ES支持dynamic resharding。