couchbase - Couchbase 中的 N1QL 查询和索引问题
问题描述
我有一个简单的 N1QL 查询:
"select xrefId, CLSTR, CLUSTER_NAME, SHORTENED_NAME, "
+ "PRMRY, SET_NUM, TYPE from myBucket "
+ "where _class=\"com.package.model.ClusterCodeXref\"
以及相应的二级索引(由于内部原因,我不允许在此存储桶上创建主索引):
CREATE INDEX `idx_xref` ON `myBucket`(`xrefId`,`CLSTR`,`CLUSTER_NAME`,
`SHORTENED_NAME`,`PRMRY`,`SET_NUM`,`TYPE`)
where _class=`com.package.model.ClusterCodeXref` using GSI
然而,当我运行查询(使用 spring-data-couchbase)时,出现以下错误:
"No index available on keyspace myBucket that matches your query.
Use CREATE INDEX or CREATE PRIMARY INDEX to create an index, or check that your expected index is online."
有人可以解释什么是错的吗?
解决方案
查询 WHERE 子句中需要存在前导索引键和索引 WHERE 子句以选择索引。使用反引号的索引 where 子句(它表示文档中的字段)。将它们更改为双引号并添加 _class 作为前导索引键,如下所示。
CREATE INDEX `idx_xref` ON `myBucket`(_class, `xrefId`,`CLSTR`,`CLUSTER_NAME`,
`SHORTENED_NAME`,`PRMRY`,`SET_NUM`,`TYPE`)
where _class="com.package.model.ClusterCodeXref" using GSI
推荐阅读
- javascript - 我怎样才能让我的标题背景在滚动时变成白色?
- java - Apache Syncope 找不到指定的路径文件错误
- apache-nifi - 有没有办法禁用 NiFi 中的所有存储库(例如 FlowFile Repo、Content Repo 等)?
- numpy - 在 for 循环中数组大小的 Numpy 问题
- javascript - 如何修复此算法以在 AST 中创建嵌套部分
- flutter - Lottie 资产加载到网络上但在我的移动设备上
- angular - Ag-Grid 内部的模态渲染
- php - 如何确保 laravel 中的列名相同?
- javascript - MongoDb 聚合在 $group 中使用 $sortByCount
- wordpress - Wordpress 预约插件,让用户在预约时自己输入服务价格