首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Couchbase集群的SearchQuery不适用于Go客户端的v2版本

Couchbase集群的SearchQuery不适用于Go客户端的v2版本
EN

Stack Overflow用户
提问于 2020-05-22 14:42:35
回答 2查看 1.2K关注 0票数 1

我要做的是对其中一个桶进行搜索。我用最小配置初始化了集群,还设置了FTS的分支,并将FTS添加到服务中。然后,我用最小选项连接到集群:

代码语言:javascript
复制
cluster, err = gocb.Connect(settings.CouchbaseConnectionString, gocb.ClusterOptions{
    Username: settings.CouchbaseUser,
    Password: settings.CouchbasePassword,
})

然后,我想按如下方式进行搜索(此时,查询并不重要):

代码语言:javascript
复制
rows, err := cluster.SearchQuery("fts_index", query, nil)
if err != nil {
    log.Printf("View query error: %s\n", err)
    return 0
}

结果:

代码语言:javascript
复制
View query error: failed to get query provider: the cluster does not support cluster-level queries (only Couchbase Server 6.5 and later) and no bucket is open. If an older Couchbase Server version is used, at least one bucket needs to be opened...

这解释了实际问题是什么,但是当我在操作之前打开一个桶时,会抛出以下错误:

代码语言:javascript
复制
View query error: failed to get query provider: not connected to cluster...

我调试了代码,查询检查了GCCCP轮询,所以当桶没有打开集群的clusterClient设置为值的字段时,GCCCP支持可以读取它,但它告诉我不支持它,这会引发第一个错误。打开桶后,集群的clusterClient设置为零,因此引发第二个错误。

知道我该怎么做布道吗?

版本:

  • 库奇基: 6.5.1
  • gocb: 2.1.1
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-24 19:04:49

我找到了一个相关的问题,在这里,当代码正确地连接到集群的桶时,我必须等待。

解决方案:

代码语言:javascript
复制
bucket := cluster.Bucket("bucket")
bucket.WaitUntilReady(30*time.Second, &gocb.WaitUntilReadyOptions{DesiredState: gocb.ClusterStateOnline})
rows, err := cluster.SearchQuery("fts_index", query, nil)
// ...

重要的部分是WaitUntilReady

票数 2
EN

Stack Overflow用户

发布于 2020-05-24 14:09:40

看起来您需要像在https://docs.couchbase.com/go-sdk/current/hello-world/start-using-sdk.html上描述的那样先打开桶

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61957539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档