Couchbase开发视图在发布到生产环境之前不会显示结果

Couchbase开发视图在发布到生产环境之前不会显示结果,couchbase,couchbase-view,Couchbase,Couchbase View,我在我的生产Couchbase服务器上创建了一个非常简单的开发视图 function (doc, meta) { if (meta.id.indexOf("user:") == 0) emit(meta.id, doc); } 此视图不返回任何结果。在本地couchbase服务器上测试相同的视图效果很好 将此视图发布为生产视图可以正常工作 有什么不对劲吗?我使用的是Couchbase版本:2.2.0 community edition build-837在开发视图时,Couchbase将只

我在我的生产Couchbase服务器上创建了一个非常简单的开发视图

function (doc, meta) {
  if (meta.id.indexOf("user:") == 0) emit(meta.id, doc);
}
此视图不返回任何结果。在本地couchbase服务器上测试相同的视图效果很好

将此视图发布为生产视图可以正常工作


有什么不对劲吗?我使用的是Couchbase版本:2.2.0 community edition build-837

在开发视图时,Couchbase将只使用bucket中的一部分数据作为结果。IIRC这是一份价值不菲的数据。它使用数据的一个子集,因为某些视图可能非常大,并且在开发新视图时,您不希望使整个集群陷入困境。因此,虽然很少见,但在运行开发视图时,在该集群上获取的数据子集可能没有匹配结果。一旦该索引被提升为生产视图,也就是说,您完成了它的开发并准备在prod中使用它,那么它将使用该bucket中的整个数据集


另一方面,如果我没有弄错的话,看起来您正在发送整个文档。根据您的数据集以及此视图对该数据的选择性,随着数据的增长,这可能会变得非常昂贵。所以你得看这个。请确保您有足够的磁盘空间用于此操作,并且Couchbase不会占用足够的OS RAM来在内存中保留尽可能多的索引,因为它与Couchbase对象的处理方式不同。发出大量数据也会减慢重新平衡的速度,特别是如果您使用默认的内部设置,如索引感知重新平衡。我不清楚您的用例,但最好只发送ID,然后批量获取这些ID或其他东西。这可能是视图可以这样做的情况之一,是的,但是应该这样做,并且有更好的方法来解决同样的问题吗。不管怎样,还是想一想。

谢谢你的回答@Kirk。如果Couchbase选择不返回视图的数据,那么完成视图的开发是非常困难的,因为我知道实际上存在这些数据。您确定这是预期的行为吗?文件中是否有说明?只是想确保这里没有技术问题。您注意到,发射整个视图是非常好的。Thanksher是开发视图的相关文档。它提到了一种强制它查看完整数据集的方法,但我不记得在WebUI中将其视为一个选项。因此,它可能在RESTAPI中或通过SDK完成。我会做更多的挖掘,看看是否能找到。它似乎在webUI中,我只是从来没有使用过它。在WebUI中有一个按钮,您可以在其中强制在完整数据集上构建开发视图。试试看,看是否有结果。根据您的数据集,构建可能需要一段时间。我在web UI中尝试过。我在那里也没有得到结果。此外,我的生产数据库是全新的,仍然非常小。这就是为什么我认为还有别的东西。我会努力挖掘,但不能保证会找到任何东西。dev视图不工作的集群中的数据集有多大?我很想知道3.0社区版是否也会出现这种情况。比什么都奇怪。