悟空,拿我的打狗棒来

采集100m java日志进入elasticsearch 变成1-2个G,如何解决

Elasticsearch | 作者 taoyantu | 发布于2017年11月02日 | 阅读数:4530

源日志的大小,大概在,100,200M ,用filebeat采集整段日志,不做任何字段的处理。一行文件,全部写入 message 字段。采集进入elasticsearch集群后,空间占用非常大,可以变成2,3个G ,这个怎么能处理吗?请教啊!!
还不能应用,我能搜索message 里面的内容。
已邀请:

medcl - 今晚打老虎。

赞同来自: kennywu76 taoyantu

mapping 要自己设置的,默认会产生两个字段,一个standard 分词,一个.keyword 字段,你是不是还算上了副本的大小?

kennywu76 - Wood

赞同来自: taoyantu

如@medcl所说,如果没有设置mapping,默认生成2个字段,特别是keyword字段,还会有doc values生成,对于message这样的长文本,生成的doc values应该会比较大。 filebeat还会添加一些额外的字段,这些也会增加空间。 如果算上副本,空间还要翻倍。

taoyantu - it

赞同来自:

有人知道怎么处理吗?谢谢!!!!

laoyang360 - 《一本书讲透Elasticsearch》作者,Elastic认证工程师 [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:https://elastic.blog.csdn.net

赞同来自:

同上 修改mapping reindex

白衬衣 - 金桥

赞同来自:

先确认下,是不是配置不对,导致数据重复了?要是没有重复的话,就是楼上medcl和wood叔说的问题了。

wisp

赞同来自:

楼上已经说了很多了,另外如果你只有1-2G数据的话,没必要设置24个shard,这样每个shard里的document个数都太少,压缩率也上不去,默认5个就可以

ledefe

赞同来自:

跟字段分词策略有关系

kennywu76 - Wood

赞同来自:

取决于用的什么ES版本,如果是5.x,索引的mapping没有事先定义, 自动生成的message会是multi-field类型, 也就是TEXT外加keyword。  这种长的message文本做为keyword索引的时候,索引和doc values会消耗比较多的磁盘空间。 事先定义好mapping,只用text应该空间占用会小很多。
 
另外ES默认会有一个复制片, 数据量还会再翻一倍。

lz8086 - es小司机

赞同来自:

wood大神已经说得很清楚了,可以从mapping入手,结合需求选用合适分词,并且最好往es存储结构化数据。另外不太清楚你机器配置如何,(机器是4台机器 ,每个上 3个elasticsearch),配置较低的话,可以每台机器上只放一个数据节点,另外你这点数据量,24个shard配置太大了,按数据增量配置shard.

要回复问题请先登录注册