--- title: "日期字段必须设置 - 如何解决此 Elasticsearch 异常" date: 2026-03-16 lastmod: 2026-03-16 description: "该错误在 Elasticsearch 中的日期字段未正确配置格式时发生。需要在映射中指定日期字段的格式以确保正确解析。" tags: ["日期字段", "映射配置", "格式设置", "解析错误"] summary: " 版本: 6.8-8.9 简而言之,当 Elasticsearch 中的日期字段未正确配置格式时,会出现此错误。Elasticsearch 需要特定的格式才能正确理解和索引日期字段。要解决此问题,可以在映射中指定日期字段的格式。例如,对于 “2022-01-01” 这样的日期,可以使用 “format”: “yyyy-MM-dd”。或者,如果日期格式不一致,可以使用多种格式,如 “format”: “yyyy-MM-dd||epoch_millis”。这将允许 Elasticsearch 正确解释日期。 日志上下文 # 日志 “[{}] must be set for date fields.” 的类名是 DecayFunctionBuilder.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入理解的人参考: } else { origin = ((DateFieldMapper.DateFieldType) dateFieldType).parseToLong(originString, false, null, null, context::nowInMillis); } if (scaleString == null) { throw new ElasticsearchParseException("[{}] must be set for date fields.", DecayFunctionBuilder.SCALE); } TimeValue val = TimeValue.parseTimeValue( scaleString, TimeValue.timeValueHours(24), DecayFunctionParser.class.getSimpleName() + ".scale" " --- > **版本:** 6.8-8.9 简而言之,当 Elasticsearch 中的日期字段未正确配置格式时,会出现此错误。Elasticsearch 需要特定的格式才能正确理解和索引日期字段。要解决此问题,可以在映射中指定日期字段的格式。例如,对于 "2022-01-01" 这样的日期,可以使用 "format": "yyyy-MM-dd"。或者,如果日期格式不一致,可以使用多种格式,如 "format": "yyyy-MM-dd||epoch_millis"。这将允许 Elasticsearch 正确解释日期。 ## 日志上下文 日志 "[{}] must be set for date fields." 的类名是 [DecayFunctionBuilder.java。](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/) 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入理解的人参考: ```java } else { origin = ((DateFieldMapper.DateFieldType) dateFieldType).parseToLong(originString, false, null, null, context::nowInMillis); } if (scaleString == null) { throw new ElasticsearchParseException("[{}] must be set for date fields.", DecayFunctionBuilder.SCALE); } TimeValue val = TimeValue.parseTimeValue( scaleString, TimeValue.timeValueHours(24), DecayFunctionParser.class.getSimpleName() + ".scale" ```