elasticsearch 返回所有找到的聚合

elasticsearch returning all found aggregations

我正在使用来自 github.com/searchly/searchly-php-sample 的示例应用程序和 Searchly 服务。

我很简单,我希望搜索结果 return 来自搜索结果的所有聚合(续为 'aggs'),而不仅仅是我指定的聚合。

目前 aggs 的代码是:

$searchParams['body']['aggs']['resolution']['terms']['field'] = 'resolution';

这是 return 的分辨率聚合,但我无法找到 return 搜索结果中所有可能的聚合的方法。

是否有可能或者是否需要我将 aggs 保存在某个位置,然后在我执行实际搜索请求时列出它们?

谢谢!

据我所知,没有办法直接执行此操作 - 您必须指定您感兴趣的每个字段。

但是,如果您可以建立索引中所有字段的列表,那么您可以很容易地生成所需的聚合。

那么,如何建立该列表?我可以想到 可能 工作的三种方式

A) 通过在将每个文档索引到 ElasticSearch 之前进行一些预处理来构建它

B) 使用 GET MAPPING api 查看动态映射创建了哪些字段 (http://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-mapping.html)

C) 使用脚本化指标聚合并编写脚本来构建文档中的去重字段列表 (http://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-scripted-metric-aggregation.html)