我使用scala连接存储桶并在存储桶中插入数据。
case class User(
firstName: String,
lastName: String,
userName: String,
email: String)
bucket.upsert(SerializableDocument.create("usr::" + user.email,user))
我可以从存储桶中插入和检索数据。现在我想在user的firstName字段上创建视图/二级索引。
val ensureIndex = Query.simple("CREATE INDEX firstName ON `user_account`(firstName)");
val queryResult = bucket.query(ensureIndex)
val queryResult = bucket.query(ViewQuery.from("dev_ddl_firstName", "firstName"))
但是我因为queryResult.totalRows()而得到0。
任何人都可以帮助我在couchbase中的字段上创建视图/二级索引的正确方法吗?
提前致谢。
答案 0 :(得分:1)
你在那里混合了两个概念。索引定义用于N1QL查询,但它确实创建了一个视图。通常,如果您通过N1QL查询创建索引,则可以使用N1QL进行查询。
您正在运行的查询位于其创建的视图上。我怀疑你需要发布它或者对开发视图使用full_set参数。坚持N1QL query可能会更好。
答案 1 :(得分:0)
除了Matt Ingenthron所说的,Java SDK中的SerializableDocument
存储带有二进制标志的数据。视图只能索引JSON文档的内容,而不是二进制文件...
您可以使用您选择的编组器将您的实例转换为JSON字符串并使用RawJsonDocument
,或者让SDK通过将您的文档转换为{{{{{{ 1}}(一个SDK简单的JSON操作类,但更多用于Java)并使用JsonObject
。