我使用以下简单查询来搜索我的弹性索引中的文档:
{
"query": { "query_string": { "query": "*test*" } },
"aggregations": {
"myaggregation": {
"terms": { "field": "myField.raw", "size": 0 }
}
}
}
这会返回每个不同值myField.raw
的文档数。
由于我对所有实际文档感兴趣而不是总数,我尝试添加以下top_hits
子聚合:
{
"query": { "query_string": { "query": "*test*" } },
"aggregations": {
"myaggregation": {
"terms": { "field": "myField.raw", "size": 0 },
"aggregations": {
"hits": {
"top_hits": { "size": 2000000 }
}
}
}
}
}
这种top_hits
的丑陋用法有效,但速度很慢。
在进行term
聚合后,有没有正确的方法来获取每个存储桶的实际文档?
答案 0 :(得分:0)
您是否考虑过在 collapse
上使用 field
?
它返回分组在 inner_hits (hits.hits[].inner_hits.<collapse-group-name>.hits.hits[]._source
) 下的文档
参考 - https://www.elastic.co/guide/en/elasticsearch/reference/6.8/search-request-collapse.html