在elasticsearch 2.4中跨节点分发批量摄取

时间:2017-11-21 20:22:45

标签: elasticsearch apache-nifi elasticsearch-2.0

我目前正在运行10个节点的Elasticsearch 2.4群集,并通过PutElasticsearch处理器使用Apache Nifi批量提取数据。

我很好奇Elasticsearch在将负载分配给所有节点时如何处理摄取(批量摄取)。如果我只在我的Elasticsearch集群中的主节点上执行批量接收命令,那么主人是否知道将接收负载分配给集群中的所有其他节点(例如循环类型策略)?

关于Nifi,在我的PutElasticsearch处理器中,我可以选择将Elasticsearch节点的所有IP地址放在 Elasticsearch Hosts 配置中。到目前为止,我刚刚放置了主节点IP,因为我认为它正在分配负载。是否值得将集群中的所有IP地址或主节点放入?

1 个答案:

答案 0 :(得分:1)

这取决于您要分配的负载的含义。 基本上这个过程看起来像这样:

  1. 客户端向协调器节点发送请求(它是接收请求的节点,它可以是群集中的任何节点,不仅主 - 主角色用于不同目的)
  2. 协调器节点计算出需要路由到文档的分片以及分片托管的节点,并将文档路由到这些节点。
  3. 更新主分片后,其主机节点会将文档转发到托管副本的节点。
  4. 当流程完成时,协调器节点会响应客户端。
  5. 因此,索引工作分布在托管目标分片和副本的节点之间,但是,所有协调都是由接收请求的节点完成的。因此,将请求发送到不同节点以分配协调工作可能是有意义的。

    也可以将节点配置为具有特定角色,查看doc