可以使用Elasticsearch的"Nested Aggregation"功能来实现按嵌套字段值总和排序文档的需求。具体步骤如下:
PUT /article { "mappings": { "properties": { "author": { "type": "text" }, "tags": { "type": "nested", "properties": { "name": { "type": "text" }, "count": { "type": "integer" } } } } } }
GET /article/_search { "query": { "match": { "author": "Jack" } }, "aggs": { "sum_of_tags_count": { "nested": { "path": "tags" }, "aggs": { "sum_of_count": { "sum": { "field": "tags.count" } } } } } }
在此示例中,我们聚合了与作者名“Jack”匹配的所有文档,并计算了每个匹配文档的所有标签计数值的总和。结果将按文档的标签计数总和升序排序。
注意:嵌套字段聚合需要在显式指定嵌套字段路径之后才能执行。例如,在以上示例中,我们指定了"nested"路径为"tags",然后才在"nested"聚合中对"tags.count"执行"sum"聚合。