elasticsearch,couchbase,Couchdb,elasticsearch,Couchbase" /> elasticsearch,couchbase,Couchdb,elasticsearch,Couchbase" />

Couchdb Couchbase和可能的?

Couchdb Couchbase和可能的?,couchdb,elasticsearch,couchbase,Couchdb,elasticsearch,Couchbase,通过Couchbase视图或Couchbase中可用的任何其他方法,可以检索与WHERE和SQL查询等效的结果集。以下面的SQL查询为例。日期字段将是一个时间戳: SELECT * FROM items WHERE category = 'Trips' AND visible = 'EVERYONE' ORDER BY date 在视图中,只有使用startkey和endkey的复合键的第一个字段才能实际限制为一个类别。例如,在下面的视图中,将第一个值作为起始键和结束键的Trips传递的复杂键

通过Couchbase视图或Couchbase中可用的任何其他方法,可以检索与WHERE和SQL查询等效的结果集。以下面的SQL查询为例。日期字段将是一个时间戳:

SELECT * FROM items WHERE category = 'Trips' AND visible = 'EVERYONE' ORDER BY date
在视图中,只有使用startkey和endkey的复合键的第一个字段才能实际限制为一个类别。例如,在下面的视图中,将第一个值作为起始键和结束键的Trips传递的复杂键会将结果集限制为Trips项。唯一的问题是以下键只会对数据进行排序。这是正确的还是我遗漏了什么

function (doc, meta) 
{
  if(meta.type == "json" && doc.type == "POST") 
  {
    emit([doc.category, dateToArray(doc.created), doc.visibility], null);
  }
}
是否可以在Couchbase中执行上面的SQL查询,该查询将返回一个结果集,其中只有结果满足这两个条件


我知道弹性搜索插件。这能提供我想要的功能吗?但是,它会以生产环境中的另一个服务器集群为代价,并且由于索引而导致结果不可用吗

如果您需要确切的位置和(就像在sql示例中一样),请尝试:

复杂密钥中的参数排序非常重要。您需要将所有“常量”放在第一位,因为这些文档的日期会发生变化,并且您在复合键中放置在日期之后的所有内容都将被忽略。 通读这篇文章,你们会找到关于couchbase索引如何工作的答案

因此,如果需要通过一个或多个字段进行精确匹配,可以使用couchbase进行匹配。如果需要按多个范围(即doc.price=100…200和doc.category=1…5)筛选结果,则需要1)多个视图和应用程序端合并(坏方法)或2)elasticsearch插件(更好方法)

function (doc, meta) 
{
  if(meta.type == "json" && doc.type == "POST") 
  {
    emit([doc.category, doc.visibility, dateToArray(doc.created)], null);
  }
}

startkey = ['Trips', 'EVERYONE']; endkey = ['Trips', 'EVERYONE', {}]