You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

父子关系索引聚合任务无限运行问题求助

父子索引聚合查询超时排查

近期将非规范化索引重构为父子关系索引,包含约14M父文档(product_data类型),每个父文档最多关联400个子文档(kpi/customer类型),总文档数约270M。重构后索引大小从500GB降至40GB,适配高频数据更新场景。已为join字段relation_type开启eager_global_ordinals,提前计算全局序数以优化查询性能。

简化后索引映射

{
  "mappings": {
    "_doc": {
      "properties": {
        "product_type": {
          "type": "keyword"
        },
        "relation_type": {
          "type": "join",
          "eager_global_ordinals": true,
          "relations": {
            "product_data": [
              "kpi",
              "customer"
            ]
          }
        },
        "rootdomain": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "rootdomain_sku": {
          "type": "keyword",
          "eager_global_ordinals": true
        },
        "sales_1d": {
          "type": "float"
        },
        "sku": {
          "type": "keyword",
          "eager_global_ordinals": true
        },
        "timestamp": {
          "type": "date",
          "format": "strict_date_optional_time_nanos"
        }
      }
    }
  }
}

问题场景

测试环境为单节点,索引仅配置1个主分片。运行以下聚合查询时,任务无限运行,等待15分钟以上无结果:

{
  "aggs": {
    "skus_sales": {
      "aggs": {
        "sales1": {
          "children": {
            "type": "kpi"
          },
          "aggs": {
            "sales2": {
              "filter": {
                "range": {
                  "timestamp": {
                    "format": "basic_date_time_no_millis",
                    "gte": "20220601T000000Z",
                    "lte": "20220605T235959Z"
                  }
                }
              },
              "aggs": {
                "sales3": {
                  "sum": {
                    "field": "sales_1d"
                  }
                }
              }
            }
          }
        }
      },
      "terms": {
        "field": "rootdomain_sku",
        "size": 10
      }
    }
  },
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "rootdomain.keyword": "some_domain"
          }
        },
        {
          "term": {
            "product_type": "Rugs"
          }
        }
      ]
    }
  }
}

排查与优化建议

  • 调整分片策略:单主分片承载270M文档的父子聚合计算压力过大,建议拆分主分片(如设置number_of_shards: 8或16)。同时写入时指定routing为父文档ID或rootdomain_sku,确保父子文档落在同一分片,避免跨分片关联的额外开销。
  • 优化聚合顺序:原查询先按rootdomain_sku分桶,再对每个桶关联子文档计算,会导致大量无效关联。可先过滤符合时间范围的子文档,再通过parent聚合关联父文档,最后按rootdomain_sku分桶求和,提前缩小计算范围:
{
  "query": {
    "bool": {
      "filter": [
        {
          "term": {
            "relation_type": "kpi"
          }
        },
        {
          "range": {
            "timestamp": {
              "format": "basic_date_time_no_millis",
              "gte": "20220601T000000Z",
              "lte": "20220605T235959Z"
            }
          }
        },
        {
          "has_parent": {
            "parent_type": "product_data",
            "query": {
              "bool": {
                "filter": [
                  {
                    "term": {
                      "rootdomain.keyword": "some_domain"
                    }
                  },
                  {
                    "term": {
                      "product_type": "Rugs"
                    }
                  }
                ]
              }
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "skus_sales": {
      "terms": {
        "field": "rootdomain_sku",
        "size": 10
      },
      "aggs": {
        "total_sales": {
          "sum": {
            "field": "sales_1d"
          }
        }
      }
    }
  }
}
  • 检查资源配置:单节点的CPU、堆内存、磁盘IO可能成为瓶颈。确保堆内存分配合理(建议为物理内存的50%,不超过32GB),设置indices.fielddata.cache.size: 20%为fielddata缓存预留足够空间,同时监控节点CPU使用率、磁盘IO等待时间,排查硬件资源是否耗尽。
  • 验证全局序数生效:虽然开启了eager_global_ordinals,但需确认索引刷新后全局序数已提前构建。可通过GET /_cat/indices?v&h=index,settings.mapping.relation_type.eager_global_ordinals验证配置,或查看节点日志确认全局序数构建过程无异常。

内容的提问来源于stack exchange,提问作者Tomer.Ov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:31:19