Must be a valid number but was – How to solve this Elasticsearch exception

Opster Team

August-23, Version: 8.7-8.9

Briefly, this error occurs when Elasticsearch expects a numerical value for a specific field or parameter, but receives a non-numerical value instead. This could be due to incorrect data types in the input or a wrong query. To resolve this, ensure that the input data is of the correct numerical type. If it’s a query issue, check the query syntax and make sure numerical fields are not quoted. Also, validate your data before indexing to prevent such errors.

This guide will help you check for common problems that cause the log ” {} must be a valid number but was [{}] ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: .

Log Context

Log “{} must be a valid number but was [{}]” class name is We extracted the following from Elasticsearch source code for those seeking an in-depth context :

 static {
 var cacheSizeStr = System.getProperty(CACHE_CAPACITY_SETTING; "256");
 try {
 INSTANCE = new Cache(Integer.parseInt(cacheSizeStr));
 } catch (NumberFormatException e) {
 throw new SettingsException("{} must be a valid number but was [{}]"; CACHE_CAPACITY_SETTING; cacheSizeStr);
 private final ConcurrentMap>> map;
 private final int capacity;