限制Elasticsearch中每种文档类型的结果

时间:2016-10-14 10:09:37

标签: elasticsearch elasticsearch-2.0 amazon-elasticsearch

我正在使用Elasticsearch(版本2.3)在具有多种文档类型的索引中进行搜索。 我想将结果数量限制为每种文档类型的前X次搜索匹配。如何实现?

查询非常简单明了:

{
  "sort": [
    {
      "_type": {
        "order": "asc"
      }
    }
  ],
  "query": {
    "query_string": {
      "query": "[some search query here]"
    }
  }
}

我在https://stackoverflow.com/a/27720049/467650找到了答案,但似乎自版本1.4.0以来语法可能已更改,因为我只收到以下错误消息:

"reason": {
    "type": "search_parse_exception",
    "reason": "Found two aggregation type definitions in [types]: [terms] and [hits]",
    "line": 1,
    "col": 44
}

1 个答案:

答案 0 :(得分:2)

我会在terms元字段上使用type聚合,然后使用top_hits子聚合,如下所示:

{
  "size": 0,
  "aggs": {
    "types": {
      "terms": {
        "field": "_type"
      },
      "aggs": {
        "topten": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
  }
}