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

版本: 6.8-7.1

概述 #

简而言之,当您尝试在 Elasticsearch 中搜索 binary 类型的字段时,会发生此错误。Binary 字段用于存储二进制数据,而这种数据是不可搜索的。

解决方案 #

要解决此问题,您可以采用以下几种方法:

  1. 更改字段类型:将字段类型更改为可搜索的类型,如 textkeyword
  2. 编码二进制数据:在索引之前,将二进制数据编码为可搜索的格式,如 Base64
  3. 使用插件或脚本:在搜索过程中使用插件或脚本将二进制数据转换为可搜索的格式

日志上下文 #

“Binary fields do not support searching” 日志的类名是 BinaryFieldMapper.java。我们从 Elasticsearch 源代码中提取了以下内容,供那些希望深入了解上下文的用户参考:

return new BytesBinaryIndexFieldData.Builder(name(), CoreValuesSourceType.BYTES);
}
@Override
public Query termQuery(Object value, QueryShardContext context) {
    throw new QueryShardException(context, "Binary fields do not support searching");
}
}
private final boolean stored;
private final boolean hasDocValues;