flash网站规划,百度网页版官网,儿童手工制作大全简单,电子产品代加工怎么找货源在 Elasticsearch 中#xff0c;嵌套聚合#xff08;nestedaggregation#xff09;的语法形式用于对嵌套字段#xff08;nestedfields#xff09;进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型#xff0c;用于存储数组中的对象#xff0c;这些对象需要独…
在 Elasticsearch 中嵌套聚合nestedaggregation的语法形式用于对嵌套字段nestedfields进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型用于存储数组中的对象这些对象需要独立于其父文档进行索引和查询。
以下是嵌套聚合的基本语法形式及其组成部分的详细说明
基本语法
json
{ aggs: { nested_aggregation_name: { nested: { path: nested_field_path }, aggs: { sub_aggregation_name: { sub_aggregation_type: { sub_aggregation_body } } } } }
} 组成部分
1. nested_aggregation_name
• 这是嵌套聚合的名称由用户自定义用于在查询结果中标识该聚合。
2. nested
• 这是嵌套聚合的类型标识符表明这是一个嵌套聚合。
3. path
• 指定嵌套字段的路径。嵌套字段路径是从根文档到嵌套字段的完整路径。例如如果嵌套字段是resellers则路径为resellers。
4. aggs
• 在嵌套聚合中可以定义一个或多个子聚合。子聚合可以是任何类型的聚合如min、max、avg、terms等用于对嵌套文档进行进一步的分析。
5. sub_aggregation_name
• 子聚合的名称由用户自定义用于在查询结果中标识该子聚合。
6. sub_aggregation_type
• 子聚合的类型例如min、max、avg、terms等。
7. sub_aggregation_body
• 子聚合的具体定义包含子聚合的字段和其他参数。
示例
以下是一个具体的嵌套聚合示例假设我们有一个产品索引products其中包含一个嵌套字段resellers每个reseller有reseller经销商名称和price价格两个字段。
创建索引和映射
json
PUT /products
{ mappings: { properties: { resellers: { type: nested, properties: { reseller: { type: keyword }, price: { type: double } } } } }
} 添加文档
json
PUT /products/_doc/0?refresh
{ name: LED TV, resellers: [ { reseller: companyA, price: 350 }, { reseller: companyB, price: 500 } ]
} 嵌套聚合查询
1. 查询所有经销商的最低价格
json
GET /products/_search?size0
{ aggs: { resellers_agg: { nested: { path: resellers }, aggs: { min_price: { min: { field: resellers.price } } } } }
} • resellers_agg嵌套聚合的名称。
• nested指定这是一个嵌套聚合。
• path指定嵌套字段的路径为resellers。
• min_price子聚合的名称。
• min子聚合的类型用于计算最小值。
• field指定聚合操作的字段为resellers.price。
2. 查询特定经销商的最低价格
json
GET /products/_search?size0
{ aggs: { resellers_agg: { nested: { path: resellers }, aggs: { filter_reseller: { filter: { bool: { filter: [ { term: { resellers.reseller: companyB } } ] } }, aggs: { min_price: { min: { field: resellers.price } } } } } } }
} • filter_reseller过滤子聚合的名称。
• filter过滤条件用于筛选出resellers.reseller为companyB的文档。
• term过滤条件的类型用于匹配特定的值。
响应示例
1. 查询所有经销商的最低价格
json
{ aggregations: { resellers_agg: { doc_count: 2, min_price: { value: 350.0 } } }
} 2. 查询特定经销商的最低价格
json
{ aggregations: { resellers_agg: { doc_count: 2, filter_reseller: { doc_count: 1, min_price: { value: 500.0 } } } }
} 总结
嵌套聚合的语法形式包括以下关键部分
• nested指定这是一个嵌套聚合。
• path指定嵌套字段的路径。
• 子聚合在嵌套聚合中嵌套其他聚合操作用于对嵌套文档进行进一步分析。
通过嵌套聚合可以对嵌套字段中的文档进行复杂的聚合操作从而满足复杂的查询需求。