我有一个像
的观点 function (doc, meta)
{
if(doc.Tenant)
{
emit([doc.Tenant.Id,doc.Tenant.User.Name],doc);
}
}
在此视图中,我希望所有值都属于Tenant.Id == 1和User.Name,其中包含“a”
我可以通过收集属于特定租户ID的所有租户数据在我的C#中搜索。 但我为每个租户提供了数百万的数据。所以需要在服务器端检查这一点。 这是否可以搜索。
答案 0 :(得分: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);
}
}
}
但是,如果您希望能够动态更改要在名称中搜索的字母或子字符串,那么您需要考虑类似elasticsearch(非常适合文本搜索)。 Couchbase有一个elasticsearch传输插件,它会自动复制到您的elasticsearch节点。
以下是关于ES和Couchbase的演示文稿
安装和使用ES插件入门的文档
http://docs.couchbase.com/couchbase-elastic-search/
这是一篇很酷的教程,详细介绍了如何在ES数据之上添加GUI以便于过滤。
http://blog.jeroenreijn.com/2013/07/visitor-analysis-with-couchbase-elasticsearch.html