1

我有一个像

    function (doc, meta)
    {
    if(doc.Tenant)
    {
    emit([doc.Tenant.Id,doc.Tenant.User.Name],doc);
    }
    }

在这个视图中,我希望所有值都属于 Tenant.Id == 1 和 User.Name 其中包含“a”

我可以通过收集属于特定租户 ID 的所有租户数据在我的 C# 中搜索它。但是我有每个租户的数百万条数据。所以需要在服务器端本身检查这一点。这是否可以搜索。

4

1 回答 1

1

我猜您希望能够更改您在字符串中搜索的字母,不幸的是,对于这种类型的查询,couchbase 并不是最好的选择。

如果它始终是您要搜索的字母“a”,那么您可以制作这样的地图,然后查询 id。

function (doc, meta) {

  if(doc.Tenant) {
    var name = doc.Tenant.User.Name.toLowerCase();
    if(name.indexOf("a") > -1) {    
       emit(doc.Tenant.Id,null); 
    }
  } 
}

但是,如果您希望能够动态更改要在名称中搜索的字母甚至子字符串,那么您需要考虑类似弹性搜索(非常适合文本搜索)。Couchbase 有一个弹性搜索传输插件,它会自动复制到您的弹性搜索节点。

这是关于 ES 和 Couchbase 的演示文稿

http://www.slideshare.net/Couchbase/using-elasticsearch-and-couchbase-together-to-build-large-scale-applications

ES 插件安装和入门文档

http://docs.couchbase.com/couchbase-elastic-search/

还有一个很酷的教程,详细介绍了如何在 ES 数据之上添加 GUI 以便于过滤。

http://blog.jeroenreijn.com/2013/07/visitor-analysis-with-couchbase-elasticsearch.html

于 2014-01-09T16:54:07.003 回答