如何在couchbase中为SerializableDocument创建视图/二级索引

时间:2015-06-21 08:25:08

标签: couchbase couchbase-view

我使用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中的字段上创建视图/二级索引的正确方法吗?

提前致谢。

2 个答案:

答案 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