可以将特定的elasticsearch查询发送到一组保留的副本?

问题描述 投票:0回答:1

我们有一个每周进程,在几个小时的过程中运行大量的弹性搜索查询。这会影响我们的elasticsearch集群对其他应用程序的性能。

我们正在考虑为这项任务启动一个完全独立的集群,这样它就不会对我们的其他用途产生负面影响。

由于我们正在运行集群,因此我们已将分片复制到多个节点。这让我想到:如果我们告诉我们昂贵的操作只能查询这些副本节点的子集,并且告诉我们其余的代码是否能够清除这些副本,那么这不是很好吗?

如果我们能够做到这一点,我们根本不需要启动一个单独的集群。我们基本上可以为每周任务保留副本的子集,并让我们的其他应用程序查询剩余的副本。

这样,如果每周任务在分配给它的节点上引起性能问题,我们的其他应用程序就不会注意到。

这可能与Elasticsearch有关吗?或者,我们应该在这里看到另一条道路吗?

elasticsearch
1个回答
0
投票

我在Elastic向Honza询问了这个问题,他向我指出了可以通过搜索传递的偏好参数:

https://www.elastic.co/guide/en/elasticsearch/reference/5.5/search-request-preference.html

这正是我所需要的:对于单个搜索查询,它允许我准确指定我想用于运行该查询的节点(或分片,或仅主要或仅副本)。

我还可以直接连接到特定节点并请求“_local”的首选项,以使查询直接在该节点上执行。

我认为这意味着我可以将我的密集型任务配置为直接连接到群集节点的子集(在禁用嗅探之后,因此它不会检测并连接到其他节点)并使用_local首选项来使弹性搜索Python客户端库加载平衡该子集中节点之间的查询。

© www.soinside.com 2019 - 2024. All rights reserved.