我有几个关于客户端节点的Elasticsearch问题:
我可以说:任何节点只要打开HTTP端口,我都可以将它们视为“客户端”节点,因为我们可以通过该节点进行搜索/索引。
实际上,当cluster=false和时data=false,我们将节点视为客户端节点,如果我设置了10个客户端节点,是否需要在客户端进行路由,这意味着如果我在代码 中将clientOne:9200 指定为ES门户,则 clientOne会 转发其他HTTP请求到其他客户端节点,否则 clientOne 将承受很高的压力。即它们是否在客户端节点之间相互通信?
cluster=false
data=false
在ES群集中指定客户端节点时,是否应该关闭其他节点的HTTP端口?因为我们只能查询客户端节点。
您是否认为有必要在同一台计算机上同时设置数据节点和客户端节点,或者只是在同一台计算机上同时将设置数据节点也用作客户端节点?
如果ES集群在搜索次数较少时将被大量索引/频繁索引,那么我不必设置客户端节点,因为客户端节点非常适合收集数据,对吗?
出于一般搜索/索引目的,我应该使用http端口还是tcp端口,请问客户端角度有何不同?
是的,您可以通过http将查询发送到打开了端口9200的任何节点。
使用node.data:false和node.master:false,您将获得一个“ 客户端节点 ”。这些对于减轻数据节点的索引编制和搜索流量很有用。如果您有10个,则需要在它们前面放置一个负载平衡器。
关闭数据节点的http端口(http.enabled:false)会使它们无法满足客户端请求(可能很好),尽管这也将阻止您直接将其卷曲以获取统计信息等。
客户端节点很有用(请参阅#2),因此我不会将流量直接路由到您的数据节点。是否在同一硬件上同时运行客户端和数据节点,将取决于该计算机的配置(您是否有足够的RAM等)。
客户端节点对于建立索引也很有用,因为它们知道哪个数据节点应接收数据进行存储。如果改为将索引请求发送到随机数据节点,则将必须将该请求重定向到另一个节点的可能性很高。如果可以创建客户端节点,那会浪费时间和资源。
让您的客户端加入群集可能会给他们提供有关群集的更多信息的权限,但是使用http会为他们提供更通用的“黑匣子”界面。使用http,您也不必将客户端保持与ES节点相同的版本。
希望能有所帮助。