2016-08-05 131 views
0

我需要在7个字段进行elasticsearch聚合,然后检索数据TopHits并做一些计算SumAvg。有没有可能获得最新的点击和计算桶没有很多循环/递归?Elasticsearch由7个字段聚合

回答

1

根据Elasticsearch文档:

“的条款聚集不支持收集来自多个领域的术语在同一文件中的原因是termsagg不收集字符串项值本身,而是使用全局序列,以产生该字段中所有唯一值的列表,全局序号会导致重要的性能提升,这在多个字段中是不可能的

有两种方法可以用来执行术语agg多个字段:

脚本 使用脚本从多个字段检索条款。这会禁用全局序号优化,并且会比从单个字段收集条款要慢,但它使您可以灵活地在搜索时实现此选项。

copy_to字段 如果您事先知道要从两个或多个字段收集条件,则在映射中使用copy_to在索引时创建包含两个字段值的新专用字段。您可以聚集在这个单一的领域,这将会从全球序优化中受益“

来源:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#_multi_field_terms_aggregation

编辑:如果您使用copy_to场,没有理由去索引它,因为这样你就不用去分析它,这个你只需要改变它的映射:

"metaFieldName" => [ 
    "type" => "string", 
    "index" => "not_analyzed" 
] 
+0

太好了,谢谢 但是,我可以存储领域,而不分析仪作为一个字符串 – Squeez

+0

@Squeez:?见编辑:) – Pandawan

+0

谢谢,我解决了这个问题只是手动执行copy_to :) 这很酷,因为我在2种类型中进行2次聚合,并且使用一个聚合存储桶中的存储桶密钥,而且差异很小,以便从第二个聚合中获取聚合存储段。 – Squeez