我在弹性搜索方面有一个简单的问题。我有HTML文件,我只想将它存储在我的索引与其他字段。
我创建了两个不同的索引,如下所示,
option1:将字段设为二进制并将html转换为base64 (myindex1是索引名称,Html字段是compresed和base64值)
HTML = (zlib.compress(Html.encode('utf-8'),9)).encode('base64')
使用上面的代码我在加载到myindex1之前压缩和编码为base64。
"Html": {
"type": "binary",
"index": "no",
"include_in_all": false,
doc_values : false,
store : true,
},
Oprion 2:在字符串字段中有html(myindex2是索引名称,Html字段是普通字符串)
"Html": {
"type": "string",
"index": "no",
"include_in_all": false,
doc_values : false,
store : true,
},
实验: 1)我收集了10K数据样本 2)compressed并转换了#34; Html"到base64并加载到ES索引(myindex1) 3)加载与myindex2相同的10k数据样本。
理论上,压缩数据的大小应该很小。所以我的假设是myindex1的大小应该小于myindex2。
但是当我验证它时,
如上所述,myindex2(无压缩)的大小更小。
为什么myindex2的尺寸小于myindex1?
答案 0 :(得分:0)
Base64不是压缩算法,而是编码算法。
Base64编码数据的大小约为未编码数据的1.37倍,因此您所观察到的数据完全正常。
Base64的主要目标是将二进制数据编码为ASCII格式。如果您正在寻找压缩算法,则会有few choices,例如ZIP,LZF等