如何在执行聚合时获得搜索命中结果?

时间:2017-03-02 10:52:51

标签: elasticsearch elasticsearch-aggregation

如ElasticSearch文档中所述:

  

在Elasticsearch中,您可以执行返回匹配的搜索,同时在一个响应中返回与命中所有内容分开的聚合结果。这是非常强大和高效的,因为您可以运行查询和多个聚合,并一次性获取两个(或任一)操作的结果,避免使用简洁和简化的API进行网络往返。

当我有查询聚合时,我想执行返回匹配的搜索。但我不确定如何实现上述目标?

我使用以下查询:

curl -XPOST 'localhost:9200/employee/_search?pretty' -d '
{
  "size": 0,
  "aggs": {
    "group_by_domain": {
      "terms": {
        "field": "domain"
      }
    }
  }
}'

这是我得到的结果,

{
  "took" : 92,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "failed" : 0
  },
  "hits" : {
    "total" : 1000,
    "max_score" : 0.0,
    "hits" : [ ]
  },
  "aggregations" : {
    "group_by_domain" : {
      "doc_count_error_upper_bound" : 5,
      "sum_other_doc_count" : 744,
      "buckets" : [ {
        "key" : "finance",
        "doc_count" : 30
      }]
    }
  }
}

我们可以看到hits数组是空的。我不知道如何获得那些命中数组。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

命中为空,因为您在指定时将返回查询的大小设置为0:

"size": 0,

你可以完全删除大小,在这种情况下,你可以获得默认的10次点击,或者你可以设置你想要的大小,例如,如果你指定100,你将得到100次点击作为回应。这与搜索结果有关。

现在,如果您还想在聚合中获得结果,可以使用Top Hits Aggregation