--- title: "Binary 字段不支持搜索——如何解决此 Elasticsearch 异常" date: 2026-02-17 lastmod: 2026-02-17 description: "当尝试在 Elasticsearch 中搜索 binary 类型的字段时,会抛出 Binary fields do not support searching 异常。本文介绍该错误的原因及解决方案。" tags: ["Binary字段", "字段映射", "搜索错误", "数据类型"] summary: " 版本: 6.8-7.1 概述 # 简而言之,当您尝试在 Elasticsearch 中搜索 binary 类型的字段时,会发生此错误。Binary 字段用于存储二进制数据,而这种数据是不可搜索的。 解决方案 # 要解决此问题,您可以采用以下几种方法: 更改字段类型:将字段类型更改为可搜索的类型,如 text 或 keyword 编码二进制数据:在索引之前,将二进制数据编码为可搜索的格式,如 Base64 使用插件或脚本:在搜索过程中使用插件或脚本将二进制数据转换为可搜索的格式 日志上下文 # “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; " --- > **版本:** 6.8-7.1 ## 概述 简而言之,当您尝试在 Elasticsearch 中搜索 binary 类型的字段时,会发生此错误。Binary 字段用于存储二进制数据,而这种数据是不可搜索的。 ## 解决方案 要解决此问题,您可以采用以下几种方法: 1. **更改字段类型**:将字段类型更改为可搜索的类型,如 `text` 或 `keyword` 2. **编码二进制数据**:在索引之前,将二进制数据编码为可搜索的格式,如 Base64 3. **使用插件或脚本**:在搜索过程中使用插件或脚本将二进制数据转换为可搜索的格式 ## 日志上下文 "Binary fields do not support searching" 日志的类名是 [BinaryFieldMapper.java](https://www.geeksforgeeks.org/java-lang-class-class-java-set-1/)。我们从 Elasticsearch 源代码中提取了以下内容,供那些希望深入了解上下文的用户参考: ```java 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; ```