使用多个 ES 节点快速索引?
Fast indexing using multiple ES nodes?
我阅读和理解的关于 运行 多个 ES 节点的所有内容都是启用索引复制和缩放。我想知道它是否可以帮助我们更快地为大量文件建立索引。我有两个问题,如下:
问题 1:认为使用多个 ES 节点会使我们的索引速度快好几倍是否准确?
问题2:如果我一直启用所有节点作为数据节点,对索引有什么影响?另一方面,如果我有很少的非数据节点(例如,一个专用的主节点和一个专用的客户端节点)和很少的数据节点,它对索引有什么影响?哪个在速度和缩放方面更好?
答案1:否
如果启用复制,索引速度实际上会降低(尽管它可能会提高搜索性能)。您可以查看 以提高索引性能。
回答2:视情况而定(如果没有副本则相同)。
在索引期间,数据将仅转到数据节点。您的集群状态将包含有关哪些节点是数据节点的信息,并相应地路由请求。性能影响只是因为接收请求的节点必须reroute/forward向数据节点
请求
如果您在不增加副本数量的情况下添加机器,您将在索引期间获得更好的性能。这并不奇怪,因为您正在添加更多资源,而要完成的工作量几乎保持不变。
在我们的环境中,我们在生产环境中使用 20 个节点,在调试环境中使用 5-10 个节点。两种环境都保存相同的数据量。由于 ES 更新速度(我们使用 groovy 脚本将新文档合并到现有文档)是我们的主要瓶颈,因此我们能够在生产环境中看到比其他环境更好的性能。
您的问题的其他答案中已经有一些有用的链接。我可以补充一点,在我们的案例中,数据上传改进的 3 个最重要的因素是:减少 refresh_interval、增加 merge_factor 和使用 Elastic-Hadoop 插件(我们从 Spark 上传数据)处理所有应用层的主要数据传输优化。
- 这些步骤中的每一个都有其自身的缺点,因此在更改配置之前请仔细阅读手册。
我阅读和理解的关于 运行 多个 ES 节点的所有内容都是启用索引复制和缩放。我想知道它是否可以帮助我们更快地为大量文件建立索引。我有两个问题,如下:
问题 1:认为使用多个 ES 节点会使我们的索引速度快好几倍是否准确?
问题2:如果我一直启用所有节点作为数据节点,对索引有什么影响?另一方面,如果我有很少的非数据节点(例如,一个专用的主节点和一个专用的客户端节点)和很少的数据节点,它对索引有什么影响?哪个在速度和缩放方面更好?
答案1:否
如果启用复制,索引速度实际上会降低(尽管它可能会提高搜索性能)。您可以查看
回答2:视情况而定(如果没有副本则相同)。
在索引期间,数据将仅转到数据节点。您的集群状态将包含有关哪些节点是数据节点的信息,并相应地路由请求。性能影响只是因为接收请求的节点必须reroute/forward向数据节点
请求如果您在不增加副本数量的情况下添加机器,您将在索引期间获得更好的性能。这并不奇怪,因为您正在添加更多资源,而要完成的工作量几乎保持不变。
在我们的环境中,我们在生产环境中使用 20 个节点,在调试环境中使用 5-10 个节点。两种环境都保存相同的数据量。由于 ES 更新速度(我们使用 groovy 脚本将新文档合并到现有文档)是我们的主要瓶颈,因此我们能够在生产环境中看到比其他环境更好的性能。
您的问题的其他答案中已经有一些有用的链接。我可以补充一点,在我们的案例中,数据上传改进的 3 个最重要的因素是:减少 refresh_interval、增加 merge_factor 和使用 Elastic-Hadoop 插件(我们从 Spark 上传数据)处理所有应用层的主要数据传输优化。
- 这些步骤中的每一个都有其自身的缺点,因此在更改配置之前请仔细阅读手册。