如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数组是空的。我不知道如何获得那些命中数组。有什么建议吗?
答案 0 :(得分:1)
命中为空,因为您在指定时将返回查询的大小设置为0:
"size": 0,
你可以完全删除大小,在这种情况下,你可以获得默认的10次点击,或者你可以设置你想要的大小,例如,如果你指定100,你将得到100次点击作为回应。这与搜索结果有关。
现在,如果您还想在聚合中获得结果,可以使用Top Hits Aggregation。