我想要做的是對其中一個桶進(jìn)行搜索。我使用最低配置初始化了集群,還設(shè)置了 FTS 的 ramsize,并將 FTS 添加到服務(wù)中。然后我用最少的選項(xiàng)連接到集群:cluster, err = gocb.Connect(settings.CouchbaseConnectionString, gocb.ClusterOptions{ Username: settings.CouchbaseUser, Password: settings.CouchbasePassword,})然后我想按如下方式進(jìn)行搜索(此時(shí)查詢無關(guān)緊要):rows, err := cluster.SearchQuery("fts_index", query, nil)if err != nil { log.Printf("View query error: %s\n", err) return 0}結(jié)果: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...這解釋了實(shí)際問題是什么,但是當(dāng)我在操作前打開一個存儲桶時(shí),會拋出以下錯誤:View query error: failed to get query provider: not connected to cluster...我調(diào)試了代碼,查詢檢查了 GCCCP 輪詢,所以當(dāng)存儲桶沒有打開集群的 clusterClient 的字段設(shè)置為一個值時(shí),GCC 支持可以讀取它,但它告訴我不支持所以拋出第一個錯誤. 在我打開存儲桶后,集群的 clusterClient 設(shè)置為 nil,因此引發(fā)了第二個錯誤。知道如何執(zhí)行搜索嗎?
2 回答

慕無忌1623718
TA貢獻(xiàn)1744條經(jīng)驗(yàn) 獲得超4個贊
我發(fā)現(xiàn)了一個相關(guān)問題,我必須等待代碼正確連接到集群的存儲桶。
解決方案:
bucket := cluster.Bucket("bucket")
bucket.WaitUntilReady(30*time.Second, &gocb.WaitUntilReadyOptions{DesiredState: gocb.ClusterStateOnline})
rows, err := cluster.SearchQuery("fts_index", query, nil)
// ...
重要的部分是WaitUntilReady.

ibeautiful
TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個贊
- 2 回答
- 0 關(guān)注
- 153 瀏覽
添加回答
舉報(bào)
0/150
提交
取消