Couchbase返回在一起创建mapreduce视图和空间视图时,设计文档可能只包含mapreduce或空间视图couchbase错误

时间:2016-10-18 14:20:24

标签: java sdk couchbase

我正在尝试从couchbase文档执行以下代码,但收到此错误。

 public static void main(String[] args) {
    CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder()
            .connectTimeout(100000) //10000ms = 10s, default is 5s
            .build();
    CouchbaseCluster cluster = CouchbaseCluster.create(env,"127.0.0.1");
    Bucket bucket = cluster.openBucket("travel-sample");

    BucketManager bucketManager = bucket.bucketManager();

    DesignDocument designDoc = DesignDocument.create(
            "landmarks",
            Arrays.asList(
                    DefaultView.create("by_country",
                            "function (doc, meta) { if (doc.type == 'landmark') { emit([doc.country, doc.city], null); } }"),
                    DefaultView.create("by_activity",
                            "function (doc, meta) { if (doc.type == 'landmark') { emit(doc.activity, null); } }",
                            "_count"),
                    SpatialView.create("by_coordinates",
                            "function (doc, meta) { if (doc.type == 'landmark') { emit([doc.geo.lon, doc.geo.lat], null); } }")
            )
    );

    bucketManager.insertDesignDocument(designDoc);

}

但是出现此错误"设计文档可能只包含mapreduce或空间视图"。请帮忙

1 个答案:

答案 0 :(得分:0)

您正在调用2个函数,DefaultView.create和SpatialView.create

在早期版本的Couchbase Server中,当Spatial Views是开发人员预览版时,这将起作用。当空间视图在4.0中作为GA引入时,添加了一个限制,即您不能在同一设计文档中同时具有地图缩小视图和空间视图。

您需要使用2个不同的设计文档,1个用于Map Reduce“默认”视图,另一个用于Spatial视图。

参见https://issues.couchbase.com/browse/MB-15256 我也继续创建https://issues.couchbase.com/browse/DOC-1836以修复文档。