elasticsearch-5,Lucene,elasticsearch 5" /> elasticsearch-5,Lucene,elasticsearch 5" />

Lucene 我可以测量给定字段的doc_值占用多少存储空间吗?

Lucene 我可以测量给定字段的doc_值占用多少存储空间吗?,lucene,elasticsearch-5,Lucene,elasticsearch 5,第一点背景: 我有一个重要的elasticsearch集群,拥有超过20TB的主数据(复制是必须的)。我们使用固态硬盘,所以存储成本不那么便宜。将数据重新索引到elasticsearch 5.4.1后,我注意到我的数据比使用elastic 1.7.5时占用的存储空间多30%。我的猜测是,这是由于在使用关键字映射类型时,doc\u值默认处于启用状态所致 我想测量特定映射字段的doc\u值的存储量?我知道我可以用两种不同的映射为文档编制索引并测量差异,但是有没有更简单、更快捷的方法 我检查了\u c

第一点背景: 我有一个重要的elasticsearch集群,拥有超过20TB的主数据(复制是必须的)。我们使用固态硬盘,所以存储成本不那么便宜。将数据重新索引到elasticsearch 5.4.1后,我注意到我的数据比使用elastic 1.7.5时占用的存储空间多30%。我的猜测是,这是由于在使用
关键字
映射类型时,
doc\u值
默认处于启用状态所致

我想测量特定映射
字段
doc\u值的存储量?我知道我可以用两种不同的
映射为文档编制索引并测量差异,但是有没有更简单、更快捷的方法

我检查了
\u cat
索引
api,没有找到任何存储详细分类,只有内存。也许我可以在文件系统中找到doc_值文件并测量它们

由于特殊的插件需求,我使用的是elasticsearch的5.4.1版

edit1: 根据doc_值,确定具有以下扩展

.dvd:DocValues数据
.dvm:DocValues元数据

我可以测量给定索引的碎片文件夹中这些文件的大小。此处为示例输出:

399M    ./nodes/0/indices/O0qTaAQHSDOfEMSD-zZXTw/2/index/_qed_Lucene54_0.dvd
646M    ./nodes/0/indices/O0qTaAQHSDOfEMSD-zZXTw/2/index/_wux_Lucene54_0.dvd
185M    ./nodes/0/indices/O0qTaAQHSDOfEMSD-zZXTw/2/index/_yve_Lucene54_0.dvd
从我看到的一些索引中,这些文件更多,而有些更少。也不确定我是否能找出它们属于哪个字段,也许所有的doc_值都存储在一起了?数据和元数据文件似乎都是二进制的,所以我无法从中提取任何内容

edit2: 采用简单的方法测量我在一个节点上检查的文件:

$ du -h ~/elasticsearch/data -d 0
642G    /home/chimeo/elasticsearch/data
$ find ~/elasticsearch/data/ -name "*.dv[dm]" -print0 | du -h --files0-from=- --total -s | tail -1
75G     total
因此,这几乎占该节点上所有存储的12%。在这里,使用一个班轮来计算比率:

bc <<< "scale=2; "`find ~/elasticsearch/data/ -name "*.dv[dm]" -print0 | du -h --files0-from=- --total -s | tail -1 | cut -f 1 | tr -d G`/`du -h ~/elasticsearch/data -d 0 | cut -f 1 | tr -d G` 

bc这可能是因为新碎片中有更多的片段。你能在两个集群中进行比较吗?你的数据是基于时间的数据吗?老实说,很多不同的事情都会改变数据的大小。迁移时,映射发生了一些变化,切分也不同,等等。这里有很多变量。有可能你是对的,也许段数在这里是错的。但我想在这个问题中找到的是,关闭doc_值可以节省多少钱。在我选中的示例节点上,
.dvm
文件占用了数据文件夹10%的存储空间。这可能是因为新碎片中有更多的片段。你能在两个集群中进行比较吗?你的数据是基于时间的数据吗?老实说,很多不同的事情都会改变数据的大小。迁移时,映射发生了一些变化,切分也不同,等等。这里有很多变量。有可能你是对的,也许段数在这里是错的。但我想在这个问题中找到的是,关闭doc_值可以节省多少钱。在我选中的示例节点上,
.dvm
文件占用了数据文件夹10%的存储空间。