我试图了解如何在elasticsearch上优化索引。让我澄清一下我的需求;
indexA
和indexB
(可以看到两个指数大致相同)所以我的问题是,如何使用这6台机器优化写入操作?
我是否应该将机器分为两部分,例如indexA
的3台机器和indexB
的3台机器?
或
我应该使用全部6台机器来索引indexA
和indexB
吗?
和
为了优化写入操作,我还需要注意什么?
提前谢谢
答案 0 :(得分:1)
这取决于,但是让我按照您的问题陈述指明方向,导致以下假设:
为了获得更好的索引性能,首先您可能希望索引具有单个分片(除非您使用路由)。但是,由于您有6个具有单个分片的服务器将浪费资源,因此您可以为indexA和indexB中的每一个分配3个分片。这适用于当前场景,但建议使用~10个分片(以便将来可扩展,并且依赖于数据大小)
关闭副本(如果可能,索引请求在返回之前等待副本响应)。虽然在生产环境中,强烈建议至少拥有一个副本以实现高可用性。
将刷新率设置为“-1”或至少设置为更大的数字,例如“30m”。 (如果您这样做,您将失去NRT搜索,但正如您所提到的,您将关注索引)
转过index warmers,如果有的话。
避免使用“doc_values”进行字段映射。 (虽然它有利于在搜索时减少内存占用,但它会增加索引时间,因为它在索引期间准备字段值)
如果可能/不需要在地图中禁用“规范”
最后阅读this。
提醒:上述某些方法会影响您的搜索效果。