Couchbase搜索键值

时间:2015-11-25 11:48:10

标签: couchbase

如何使用CB视图在Couchbase中实现搜索。我不想使用弹性搜索进行搜索。什么是基于价值搜索文档的最佳方法。例如,下面是我的文件。我想根据名称,城市,州和国家实施搜索。

{
  "_id": "location::370794",
  "name": "Kenai Riverside Fishing",
  "description": "Welcome to the Kenai Riverside Fishing program at Kenai Riverside Lodge, your destination for incredible Alaska fishing experiences. Kenai Riverside Fishing is part of Alaska Wildland Adventures, a long-time  operator of guided fishing trips since 1977. Our trips explore the world-famous Kenai River for freshwater species, like king and sockeye salmon, rainbow trout and Dolly Varden. We also  fish Resurrection Bay for halibut and silver salmon. Whether you are a seasoned angler or a first time fisherman, we’ll put you on the fish!",
  "city": "Cooper Landing",
  "state": "Alaska",
  "country": "USA",
}

如何使用couchbase视图实现这一目标?

1 个答案:

答案 0 :(得分:3)

如果可以,请使用N1QL

您是否查看了新发布的Couchbase Server 4.0,特别是N1QL

这是一种非常强大的查询语言(SQL的超集),允许您使用任何组合查询文档,包括例如。 statecity等等......

您可以在最有可能查询的字段上设置二级索引以获得更好的性能,并且您可以获得很大的灵活性!

如果你真的想坚持观点

要回答有关视图的问题,如果您想要通过只选择4个标准中的一个来查询,那么您需要做的是构建4个视图(每个标准一个)。每个视图都会将文档映射到相应的标准。例如,使用country:

function (doc, meta) {
  if (doc.country) {
    emit(doc.country, null);
  }
}

if检查该字段实际存在。如果您的存储桶中有多种文档类型,也许您还希望过滤适当的文档类型(例如,通过检查示例中_id属性的前缀是location::)。

搜索只需要查询4中的正确视图,提供key搜索,例如。 france。注意:也许您希望发出toUpperCase()版本的数据,以便搜索不区分大小写(在查询时您也必须将查找键大写)。

<强>文档

有关使用Couchbase查询的一般信息(从开发人员的角度来看),请查看N1QLViews上的开发人员指南。

另请参阅documentation of your SDK,了解如何以您喜欢的语言查询views和/或N1QL