📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

版本: 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"