为了账号安全,请及时绑定邮箱和手机立即绑定

Couchbase 集群的 SearchQuery 在 Go 客户端的 v2 版本上不起作用

Couchbase 集群的 SearchQuery 在 Go 客户端的 v2 版本上不起作用

Go
缥缈止盈 2022-06-06 15:08:16
我想要做的是对其中一个桶进行搜索。我使用最低配置初始化了集群,还设置了 FTS 的 ramsize,并将 FTS 添加到服务中。然后我用最少的选项连接到集群:cluster, err = gocb.Connect(settings.CouchbaseConnectionString, gocb.ClusterOptions{    Username: settings.CouchbaseUser,    Password: settings.CouchbasePassword,})然后我想按如下方式进行搜索(此时查询无关紧要):rows, err := cluster.SearchQuery("fts_index", query, nil)if err != nil {    log.Printf("View query error: %s\n", err)    return 0}结果: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...这解释了实际问题是什么,但是当我在操作前打开一个存储桶时,会抛出以下错误:View query error: failed to get query provider: not connected to cluster...我调试了代码,查询检查了 GCCCP 轮询,所以当存储桶没有打开集群的 clusterClient 的字段设置为一个值时,GCC 支持可以读取它,但它告诉我不支持所以抛出第一个错误. 在我打开存储桶后,集群的 clusterClient 设置为 nil,因此引发了第二个错误。知道如何执行搜索吗?
查看完整描述

2 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

我发现了一个相关问题,我必须等待代码正确连接到集群的存储桶。


解决方案:


bucket := cluster.Bucket("bucket")

bucket.WaitUntilReady(30*time.Second, &gocb.WaitUntilReadyOptions{DesiredState: gocb.ClusterStateOnline})

rows, err := cluster.SearchQuery("fts_index", query, nil)

// ...

重要的部分是WaitUntilReady.


查看完整回答
反对 回复 2022-06-06
?
ibeautiful

TA贡献1993条经验 获得超5个赞

查看完整回答
反对 回复 2022-06-06
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信