Vespa 是否支持动态字段?

Does Vespa support dynamic fields?

我正在寻找任何选项,例如 Vespa 中的动态字段 (Solr)。我需要在不重新部署整个应用程序的情况下向现有模式添加新字段。

Vespa 文档中提到了与此相关的任何内容 http://docs.vespa.ai/documentation/search-definitions.html#modify-search-definitions

其中提到我们可以添加一个新字段和 运行 vespa-deploy preparevespa-deploy activate。但这不是重新提交整个申请吗?至少在开销上实现它的选项是什么?

http://docs.vespa.ai/documentation/search-definitions.html#modify-search-definitions是正确的文件,是

更改搜索定义是安全的,因为部署准备步骤将输出所需的步骤(例如,没有步骤,re-start 或 re-feed)。大多数操作不需要 re-start 或 re-feed,因为 Vespa 是为生产友好而构建的,添加字段很容易,因为它不需要任何操作。

请注意,不支持字段的默认值。

由于 Vespa 配置是声明式的,因此提交了完整的应用程序包,但配置服务器将计算更改并将增量部署到节点。这使得将应用程序包配置保存在像 git 这样的代码仓库中变得容易 - 你在仓库中看到的就是部署的东西。

这取决于你所说的 "dynamic" 是什么意思。

如果数以百计的字段由应用程序所有者控制并每天更改,那么更改架构和重新部署工作得很好:字段可以单独更新(即使在索引时),如果不更新则不会产生开销使用,并且部署具有新字段的应用程序很便宜,不需要任何重新启动或类似的东西。

如果你需要上万个字段,或者字段被用户添加和删除,那么 Vespa 没有开箱即用的解决方案。您需要通过向每个标记添加例如 "myfield_" 前缀来将字段合并到同一索引中。这就是支持此功能的引擎在内部执行的操作,以提高效率。