elasticsearch 我如何在文档中找到5个具有最高分数方面且具有特定字段的文档?,elasticsearch,couchbase,elasticsearch,Couchbase" /> elasticsearch 我如何在文档中找到5个具有最高分数方面且具有特定字段的文档?,elasticsearch,couchbase,elasticsearch,Couchbase" />

elasticsearch 我如何在文档中找到5个具有最高分数方面且具有特定字段的文档?

elasticsearch 我如何在文档中找到5个具有最高分数方面且具有特定字段的文档?,elasticsearch,couchbase,elasticsearch,Couchbase,我正在使用Couchbase这是一个Nosql数据库来存储网站的数据。我还使用Elasticsearch作为我的查询工具。我最近遇到了一个关于方面或分组结果的挑战。假设我的数据库中有7个文档 { "id": "1", "keywords": "red", "owner_id": "a" } { "id": "2", "keywords": "red", "owner_id": "a" } { "id": "3", "keywords": "red",

我正在使用Couchbase这是一个Nosql数据库来存储网站的数据。我还使用Elasticsearch作为我的查询工具。我最近遇到了一个关于方面或分组结果的挑战。假设我的数据库中有7个文档

{
  "id": "1",
  "keywords": "red",
  "owner_id": "a"
}

{
  "id": "2", 
  "keywords": "red",  
  "owner_id": "a"
}

{
  "id": "3",
  "keywords": "red",  
  "owner_id": "a"
}

{
  "id": "4",
  "keywords": "red blue green",  
  "owner_id": "a"
}

{
  "id": "5",
  "keywords": "red blue",  
  "owner_id": "b"
}

{
  "id": "6",
  "keywords": "red blue",  
  "owner_id": "b"
}

{
  "id": "7",
  "keywords": "red blue green yellow",  
  "owner_id": "b"
}
当我在
“关键字”
中搜索
“红色”
时,我将得到6个结果,每个结果都有一个分数。顺序如下:

1
2
3
5
6
4
7
我想要的是在
“关键字”
中搜索
“红色”
,然后添加facet术语
“所有者id”
,facet大小为2。它给我的回报只是

1
2
5
6
这意味着即使id“3”在匹配方面的得分高于“5”和“6”
“red”
,但由于它达到了可以从类型“a”返回的最大文档数,因此不会返回它


我尝试了facets,但它只在最后给我统计数据,仍然返回所有文档。我在1.00 beta2中读到了关于聚合的内容,但仍然找不到一个方法。关于我可以在一个查询中完成这一切有什么想法吗

你在使用什么数据库?还有,你的工作做得怎么样?请编辑您的问题以添加适当的标记以及您用于搜索的代码/查询。我认为他的问题是“如何才能仅显示每个术语的前两个结果”,在这种情况下,术语是所有者id。我认为在elasticsearch中,您无法在单个查询中实现这一点。虽然你可以创建一个搜索,用术语facets循环搜索可用的术语,然后对每个术语进行排名前x的搜索结果(搜索的点击率可能很高)。我想James说得对,问题应该是“如何才能只显示每个术语的前两个结果”。我想循环所有可用的术语,然后比较分数以获得订单。但问题是我已经有了1000个术语,这意味着一个动作需要1000个查询。可能有很多人想同时做同样的事情。