Elasticsearch黑鸟教程28:糟糕的设计思想:Ingest节点
也许可以把复杂和混乱的Elasticsearch技术栈的现状归结于搜索业务的多变,但是不得不承认Elasticsearch的创始人和开发团队的技术功底不是很好,把Elasticsearch搞的善变,而让用户多愁。对于Ingest这个功能的设计,无论布道者说的多天花乱坠,但是鸡肋现状难以改变。
Ingest节点是什么?
先看官方的介绍:
Use an ingest node to pre-process documents before the actual document indexing happens. The ingest node intercepts bulk and index requests, it applies transformations, and it then passes the documents back to the index or bulk APIs. All nodes enable ingest by default, so any node can handle ingest tasks. To create a dedicated ingest node, configure the node.roles setting in elasticsearch.yml as follows:
node.roles: [ ingest ]
在实际的文档索引建立之前,使用Ingest节点对文档进行预处理。Ingest节点拦截批量和索引请求,应用转换,然后将文档传递回索引或批量APIs。默认情况下,所有节点都启用Ingest,因此任何节点都可以处理Ingest任务。要创建专用的Ingest节点,请在elasticsearch.yml中配置node.roles。
node.roles: [ ingest ]
读完官方介绍,你会明白:所有的节点都默认是Ingest节点。如同分布式集群架构所花费的“主-从”两种角色,Ingest节点仅仅是一种角色而已,但是比“主-从”这样的角色划分更加鸡肋,算是Elastic官方的预留而已。举例来说,所有的男孩生下来,他都可以有一个默认的“父亲”的角色。不过,对于童年的孩子来说,这个角色其实没有什么价值和用处。Elastic官方糟糕的设计思想可见一斑。
参考:
https://www.elastic.co/guide/en/elasticsearch/reference/current/ingest.html