Both and must be set for numeric fields – How to solve this Elasticsearch exception

Opster Team

August-23, Version: 6.8-7.15

Briefly, this error occurs when Elasticsearch tries to index a document with a numeric field that lacks either a value or a type. Elasticsearch requires both to properly index and search numeric fields. To resolve this issue, ensure that all numeric fields in your documents have both a value and a type. If you’re dynamically creating documents, add checks to your code to ensure these fields are always set. Alternatively, you can set default values for these fields in your Elasticsearch mappings.

This guide will help you check for common problems that cause the log ” both [{}] and [{}] must be set for numeric fields. ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: index, query.

Log Context

Log “both [{}] and [{}] must be set for numeric fields.” class name is DecayFunctionBuilder.java. We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 } else {
 throw new ElasticsearchParseException("parameter [{}] not supported!"; parameterName);
 }
 }
 if (scaleFound == false || refFound == false) {
 throw new ElasticsearchParseException("both [{}] and [{}] must be set for numeric fields."; DecayFunctionBuilder.SCALE;
 DecayFunctionBuilder.ORIGIN);
 }
 IndexNumericFieldData numericFieldData = context.getForField(fieldType);
 return new NumericFieldDataScoreFunction(origin; scale; decay; offset; getDecayFunction(); numericFieldData; mode);
 }

 

 [ratemypost]