二进制(binary)类型接受二进制值作为 Base64 编码字符串。 该字段默认不存储且不可搜索。Base64 编码的二进制值不得嵌入换行符 \n。
这听起来像是,将二进制对象存储在 Elasticsearch 中的单个字段中
PUT my-index-000001
{
"mappings": {
"properties": {
"name": {
"type": "text"
},
"blob": {
"type": "binary"
}
}
}
}
二进制字段的参数
二进制字段接受以下参数:
条目 | 描述 |
---|---|
doc_values | 该字段是否应该以列跨度的方式存储在磁盘上,以便以后可以用于排序、聚合或脚本编写? 接受 true 或 false。默认值为 false |
store | 字段值是否应与 _source 字段分开存储和检索。 接受 true 或 false(默认)。 |
如果关闭倒排索引和 doc_values,二进制字段类型与 keyword 字段类型相同,那么它的用途是什么?
Elasticsearch 的一个典型用例是用作元数据搜索引擎,文档中至少有一个字段指向另一个存储库中的对象,例如图像、电影和歌曲的链接,而其余字段用于 找到该对象(歌曲名称、图像描述、导演)。 要获取对象本身,你首先需要在 Elasticsearch 中进行搜索,然后在其他位置运行 GET 请求。 使用二进制字段类型,我们可以将对象直接存储在 Elasticsearch 的字段中,现在对 Elasticsearch 的查询将返回二进制对象,无需在其他任何地方运行第二个请求。
如果你想将数据存储在一个地方并且你关心尽可能快地检索信息,这非常好。
注意:二进制对象可能非常大,会增加 Elasticsearch 中的存储成本。
潜在有用的用例
几个字节或几千字节大小的文件,甚至可能是几兆字节,例如图像(png、jpg)、短 mp3、静态 HTML 页面、其他文档(txt/pdf/doc)。 这些也应该都是静态文件,不会随着时间的推移过于频繁地更改。
要避免的用例
大文件,如视频、无损歌曲、超大图像等,此列表应包括任何经常更新的文件,如 Google Docs/Microsoft Word 中的动态文档或协作或其他方式创建的任何其他文件。 (通常很难定义,这取决于用例,根据经验,如果文件每天/每周/每月更改 100 次,则可能需要避免)。