Couchbase 集群的 SearchQuery 不适用于 Go 客户端的 v2 版本
Couchbase cluster's SearchQuery not working on Go client's v2 version
我想做的是对其中一个存储桶执行搜索。我用最低限度的配置初始化了集群,还设置了 FTS 的内存大小,并将 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 字段设置为一个值,因此 GCCCP 支持可以读取它,但它告诉不支持所以抛出第一个错误。在我打开存储桶后,集群的 clusterClient 设置为 nil,因此抛出了第二个错误。
知道如何执行搜索吗?
版本:
- 沙发底座:6.5.1
- gocb: 2.1.1
看来您需要先按照 https://docs.couchbase.com/go-sdk/current/hello-world/start-using-sdk.html
中的说明打开存储桶
我找到了一个相关的 issue,我必须等待代码正确连接到集群的存储桶。
解决方案:
bucket := cluster.Bucket("bucket")
bucket.WaitUntilReady(30*time.Second, &gocb.WaitUntilReadyOptions{DesiredState: gocb.ClusterStateOnline})
rows, err := cluster.SearchQuery("fts_index", query, nil)
// ...
重要的部分是WaitUntilReady
。
我想做的是对其中一个存储桶执行搜索。我用最低限度的配置初始化了集群,还设置了 FTS 的内存大小,并将 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 字段设置为一个值,因此 GCCCP 支持可以读取它,但它告诉不支持所以抛出第一个错误。在我打开存储桶后,集群的 clusterClient 设置为 nil,因此抛出了第二个错误。
知道如何执行搜索吗?
版本:
- 沙发底座:6.5.1
- gocb: 2.1.1
看来您需要先按照 https://docs.couchbase.com/go-sdk/current/hello-world/start-using-sdk.html
中的说明打开存储桶我找到了一个相关的 issue,我必须等待代码正确连接到集群的存储桶。
解决方案:
bucket := cluster.Bucket("bucket")
bucket.WaitUntilReady(30*time.Second, &gocb.WaitUntilReadyOptions{DesiredState: gocb.ClusterStateOnline})
rows, err := cluster.SearchQuery("fts_index", query, nil)
// ...
重要的部分是WaitUntilReady
。