2014-10-22 37 views
1

我创建了一个非常简单的发展观生产 Couchbase服务器Couchbase发展观不显示,直到发布到生产

function (doc, meta) { 
    if (meta.id.indexOf("user:") == 0) emit(meta.id, doc); 
} 

这种观点不返回任何结果的结果。在本地的couchbase服务器上测试相同的视图可以正常工作。

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

什么可能是错的?我正在使用Couchbase版本:2.2.0社区版(build-837)

回答

0

在开发视图时,Couchbase将仅使用您的存储桶中的数据子集来获取结果。 IIRC这是一个vBucket的数据价值。它使用数据的一个子集,因为某些视图可能非常大,并且在开发新视图时不希望陷入整个群集。所以虽然很少见,但当您运行开发视图时,可能会在该群集上拾取的数据的子集没有匹配的结果。一旦该索引被提升为生产视图,即你已经完成了开发并准备在产品中使用它,那么它将使用该桶中的整个数据集。

在相关说明中,如果我没有弄错,它看起来像是发出整个文档。根据您的数据集和该数据视图的选择性,随着您的数据增长,这可能会相当昂贵。所以你将不得不看这个。确保你有足够的磁盘空间来存储这个足够的OS RAM(Couchbase没有占用这个空间),以便在内存中保留尽可能多的索引,因为它与Couchbase对象的处理方式不同。发射大量数据也会减慢重新平衡,特别是如果您使用默认内部设置(如索引感知重新平衡)。我不明白你的使用情况,但是最好只是发出ID,然后批量获取这些ID或其他内容。是的,这可能是其中一种观点可以做到这一点的情况之一,但是如果他们有,并且有更好的方法来解决同样的问题。无论如何,只是想一想。

+0

感谢您的回答@Kirk。如果Couchbase选择不返回数据(这是我知道的事实),那么完成开发视图非常困难。你确定这是预期的行为吗?这是在文档中的任何地方陈述?只是试图确定这里没有技术问题。 你注意到发射整个视野非常好。谢谢 – Lior 2014-10-22 22:40:11

+0

以下是关于开发视图的相关文档。 http://docs.couchbase.com/admin/admin/Views/views-development.html它提到了强制它看到完整数据集的方法,但我不记得在WebUI中将它看作是一个选项。所以它可能在REST API中或通过SDK完成。我会做更多的挖掘,看看我能不能找出答案。 – Kirk 2014-10-23 15:26:36

+0

它是在webUI中看起来,我从来没有用过它。在WebUI中有一个按钮,您可以在其中强制将开发视图构建在完整数据集上。尝试一下,看看你是否得到了结果。根据您的数据集,可能需要一段时间才能构建。 – Kirk 2014-10-23 16:42:52