我通常用_type查询ES,所以我想知道我是否使用_type作为路由参数,那读取/写入性能会更好吗? 例如: PUT my_index / my_type / 1?routing = _type
我的情况是,对于某些_types我只有几百万个文档,而其他_types我可能有几十亿个文档,但它们都在一个索引中。 我害怕位于每个节点的小_types文档,这可能会导致读取性能不佳。所以我更喜欢仅位于两个或三个节点上的小_types,而不是集群中的所有节点。
答案 0 :(得分:1)
routing
参数不用于将索引分配给特定节点,而是用于将文档分配给索引中的特定分片。
如果要将索引分配给一个或两个特定节点,可以使用shard allocation filtering,在那里可以指定给定索引的分片位于哪个节点上。
例如,如果您确定您的小索引只能位于192.168.1.1
和192.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.1
或192.168.1.2
,但不会分配给群集的其他节点。