按 Vespa.ai 中的分区查询

Query by partition in Vespa.ai

发出查询时,Vespa 在所有内容节点(在分发组中)上运行查询并returns 结果。我有两个始终出现在搜索查询中的键。我可以根据这些键的值对数据进行分区,以便每当我查询 Vespa 时都知道要查找的位置而不是查询所有内容节点吗?

您描述的一般用例不支持此功能。您可能想要研究的最接近的功能是使用 streaming mode,例如使用两个键的散列作为文档组 ID。

流媒体模式详情: https://docs.vespa.ai/documentation/streaming-search.html

关于文档 ID 方案的信息: https://docs.vespa.ai/documentation/documents.html

另一个可能不太适合您的用例的选项是将文档分成不同的文档类型。

在大多数情况下,您不想使用数据的属性来控制向内容节点的分发,因为这会导致节点负载不均。负载不均匀意味着成本增加(因为您的成本将等于所有节点都与负载最大的节点一样负载的情况),以及潜在的操作问题(因为如果您继续将某些文档添加到相同的节点,添加节点将不会减轻过载问题节点)。

通常这样做可能节省的费用并不多,因为确定内容节点上没有匹配项的成本非常低,而且远不能抵消上述缺点。例外情况可能是查询非常大(具有数千个元素的张量),或者如果没有这个,您将有一个非常大的扇出(数百个节点)。