【问题标题】:How to create views/secondary index for SerializableDocument in couchbase如何在 couchbase 中为 SerializableDocument 创建视图/二级索引
【发布时间】:2015-06-21 08:25:08
【问题描述】:

我正在使用 scala 连接存储桶并在存储桶中插入数据。

case class User(
firstName: String,
lastName: String,
userName: String,
email: String)

bucket.upsert(SerializableDocument.create("usr::" + user.email,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"))

但我得到 0 作为 queryResult.totalRows() 的结果。

任何人都可以帮助我在沙发库中的字段上创建视图/二级索引的正确方法吗?

提前致谢。

【问题讨论】:

    标签: couchbase couchbase-view


    【解决方案1】:

    你在这里混合了两个概念。索引定义是针对 N1QL 查询的,尽管它确实创建了一个视图。通常,如果您通过 N1QL 查询创建索引,您将使用 N1QL 进行查询。

    您正在运行的查询位于由它创建的视图上。我的怀疑是您需要发布它或对开发视图使用 full_set 参数。最好坚持N1QL query

    【讨论】:

      【解决方案2】:

      除了 Matt Ingenthron 所说的,Java SDK 中的SerializableDocument 是用二进制标志存储数据。视图只能索引 JSON 文档的内容,不能索引二进制的...

      您可以使用您选择的编组器将您的实例转换为 JSON 字符串并使用 RawJsonDocument,或者通过将您的文档转换为 JsonObject 让 SDK 使用 Jackson 编组它( SDK 简单的 JSON 操作类,但更适用于 Java)并使用 JsonDocument

      【讨论】:

        猜你喜欢
        • 2017-10-11
        • 2015-10-01
        • 1970-01-01
        • 2020-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-13
        • 2018-05-04
        相关资源
        最近更新 更多