Spring Data Couchbase索引问题

bil*_*lak 2 couchbase spring-boot spring-data-couchbase

我正在玩Couchbase和Spring数据Couchbase。为此,我已经安装了带有版本号5.5.1 build 3511并启用了测试桶的ouchbase 。我已经beer-sample用密码创建了用户,beer-sample并向他添加了bucket的所有权限beer-sample

然后,我创建了带有示例配置的示例应用程序。当我启动该应用程序并查询存储桶中的现有啤酒时,出现异常:

com.couchbase.client.java.error.ViewDoesNotExistException: View beer/all does not exist.
    at com.couchbase.client.java.view.ViewQueryResponseMapper$BuildViewResult.call(ViewQueryResponseMapper.java:211)
    at com.couchbase.client.java.view.ViewQueryResponseMapper$BuildViewResult.call(ViewQueryResponseMapper.java:185)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77)
    at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.internal.operators.OperatorSingle$ParentSubscriber.onCompleted(OperatorSingle.java:113)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.checkTerminated(OperatorObserveOn.java:281)
    at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:216)
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: com.couchbase.client.java.document.json.JsonObject.class
    at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:118)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:73)
    ... 16 more
Run Code Online (Sandbox Code Playgroud)

我猜应该使用我的配置自动创建索引,但是也许我错了。

Mad*_*hat 5

您正在中使用Spring的benchbase存储库接口BeerRepositoryfindAll()接口的方法期望存在Couchbase View来获取数据。因此,您需要在ouchbase中手动创建视图,或者可以使用注释您的BeerRepository界面@ViewIndexed(designDoc = "beer", viewName = "all"),如果不存在该视图,则会自动创建视图。

您所做的错误是使用注释了您的Beer@ViewIndexed,因为该注释应该用于您的Repository接口。有关注释的更多信息,请参见此处

综上所述,您还应该检查如何利用Couchbase的N1QL查询从Couchbase访问数据。您可以@Query在存储库方法上使用相同的注释。有关在此处使用@Query注释的更多信息。