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

版本: 6.8-7.15

简而言之,当 Elasticsearch 接收到数据类型不正确的搜索请求时,会出现此错误。它期望在指定字段中获得字符串值,但实际接收到的却是其他数据类型。要解决此问题,你应该检查在搜索请求中发送的数据。确保指定字段中的值是字符串类型。如果你使用编程语言发送请求,可能需要在发送之前将值转换为字符串。此外,请检查你的映射配置,确保字段被定义为字符串类型。

日志上下文 #


日志 “could not read search request. expected string values in [” 的类名是 WatcherSearchTemplateRequest.java。 我们从 Elasticsearch 源代码中提取了以下内容,供那些寻求深入上下文的人使用:

if (INDICES_FIELD.match(currentFieldName, parser.getDeprecationHandler())) {
    while ((token = parser.nextToken()) != XContentParser.Token.END_ARRAY) {
        if (token == XContentParser.Token.VALUE_STRING) {
            indices.add(parser.textOrNull());
        } else {
            throw new ElasticsearchParseException("could not read search request. expected string values in [" +
                currentFieldName + "] field; but instead found [" + token + "]");
        }
    }
} else if (TYPES_FIELD.match(currentFieldName, parser.getDeprecationHandler())) {
    deprecationLogger.deprecate(DeprecationCategory.TYPES, "watcher_search_input", TYPES_DEPRECATION_MESSAGE);