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

OpenSearch 2.1.0 Rollup Job因max指标计算失败问题求助

OpenSearch 2.1.0 Rollup Job失败:无法解析'-Infinity'为float类型

问题原因

你的Rollup Job计算Length字段的max指标时,某个分组(由Timestamp的1d窗口+Type字段共同确定)内没有有效的Length数值(比如该分组下所有文档的Length都是null),导致max计算结果为-Infinity。而目标索引中Length.max字段的映射类型是float,OpenSearch在尝试写入该值时触发解析错误——虽然IEEE 754标准的float支持无穷大值,但OpenSearch 2.1.0的Rollup插件在处理无有效数据的分组时,会将-Infinity以字符串形式输出,从而无法被float类型字段解析。

你之前的Rollup Job正常,是因为那些任务的所有分组中都存在有效数值,max计算不会返回-Infinity。

解决方案

方案1:为Rollup指标添加缺失值默认值

修改Rollup Job的metrics配置,为max和avg指标指定missing参数,当字段缺失时用合法的float值(比如0)替代,避免生成-Infinity。

修改后的Rollup Job配置如下:

{
  "rollup": {
    "source_index": "source_index",
    "target_index": "rollup-index", 
    "schedule": {
      "interval": {
        "period": 1,
        "unit": "Minutes"
      }
    },
    "description": "Test Rollup job",
    "enabled": true,
    "page_size": 200,
    "delay": 0,
    "continuous": true,
    "dimensions": [
      {
        "date_histogram": {
          "source_field": "Timestamp",
          "fixed_interval": "1d"
        }
      },
      {"terms": {"source_field": "Type"}}
    ],
    "metrics": [
      {
        "source_field": "Count",
        "metrics": [{"sum":{}}]
      },
      {
        "source_field": "Length",
        "metrics": [
          {"max": {"missing": 0}},
          {"avg": {"missing": 0}}
        ]
      },
      {
        "source_field": "Requests",
        "metrics": [
          {"max": {"missing": 0}},
          {"avg": {"missing": 0}}
        ]
      }
    ]
  }
}

方案2:预处理源数据

检查源数据中对应分组的Length字段,确保每个分组内至少存在一个有效的数值。可以通过数据清洗补全缺失的Length值,或者过滤掉无有效Length的文档。

方案3:手动指定目标索引映射

如果需要保留无穷大值的场景,可以先手动创建目标索引的映射,确保Length.max字段支持无穷大的float值。不过此方法仍可能受限于Rollup插件的处理逻辑,优先推荐方案1。

手动创建目标索引映射示例:

PUT /rollup-index
{
  "mappings": {
    "properties": {
      "Length.max": {
        "type": "float"
      },
      "Length.avg": {
        "type": "float"
      },
      "Timestamp": {
        "type": "date"
      },
      "Type": {
        "type": "keyword"
      }
    }
  }
}

验证步骤

  1. 禁用并删除原Rollup Job:
curl -X POST "http://your-opensearch-host:9200/_plugins/_rollup/job/rollup-test/_disable"
curl -X DELETE "http://your-opensearch-host:9200/_plugins/_rollup/job/rollup-test"
  1. 使用修改后的配置重新创建并启用Job:
curl -X PUT "http://your-opensearch-host:9200/_plugins/_rollup/job/rollup-test" -H "Content-Type: application/json" -d @modified-rollup-config.json
curl -X POST "http://your-opensearch-host:9200/_plugins/_rollup/job/rollup-test/_enable"
  1. 查看Job状态:
curl -X GET "http://your-opensearch-host:9200/_plugins/_rollup/job/rollup-test/_status"

内容的提问来源于stack exchange,提问作者Tiz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 12:15:39