Elasticsearch:二进制数据类型 - binary field

 二进制(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 次,则可能需要避免)。

猜你喜欢

转载自blog.csdn.net/UbuntuTouch/article/details/131152677