如何在ElasticSearch术语聚合后返回每个存储桶的所有文档?

时间:2015-06-24 14:59:56

标签: elasticsearch aggregate

我使用以下简单查询来搜索我的弹性索引中的文档:

{
    "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聚合后,有没有正确的方法来获取每个存储桶的实际文档?

1 个答案:

答案 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