我应该使用ElasticSearch _type作为路由

时间:2016-05-20 02:47:46

标签: elasticsearch

我通常用_type查询ES,所以我想知道我是否使用_type作为路由参数,那读取/写入性能会更好吗? 例如: PUT my_index / my_type / 1?routing = _type

我的情况是,对于某些_types我只有几百万个文档,而其他_types我可能有几十亿个文档,但它们都在一个索引中。 我害怕位于每个节点的小_types文档,这可能会导致读取性能不佳。所以我更喜欢仅位于两个或三个节点上的小_types,而不是集群中的所有节点。

1 个答案:

答案 0 :(得分:1)

routing参数不用于将索引分配给特定节点,而是用于将文档分配给索引中的特定分片。

如果要将索引分配给一个或两个特定节点,可以使用shard allocation filtering,在那里可以指定给定索引的分片位于哪个节点上。

例如,如果您确定您的小索引只能位于192.168.1.1192.168.1.2,则您需要运行以下命令:

PUT my_index/_settings
{
  "index.routing.allocation.include._ip": "192.168.1.1,192.168.1.2"
}

运行此操作后,您会看到my_index的所有分片都被重新分配到192.168.1.1192.168.1.2,但不会分配给群集的其他节点。