# Compression ratio

**URL:** <https://discuss.elastic.co/t/compression-ratio/164603>\
**Category:** Elasticsearch\
**Created:** [January 17, 2019, 9:49am UTC](https://discuss.elastic.co/t/compression-ratio/164603 "2019-01-17T09:49:19Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![amitavmohanty01](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amitavmohanty01/32/58017_2.png) [@amitavmohanty01](https://discuss.elastic.co/u/amitavmohanty01)\
**Post date:** [January 17, 2019, 9:49am UTC](https://discuss.elastic.co/t/compression-ratio/164603/1 "2019-01-17T09:49:19Z")

</div>

Is there any way of getting the current compression ratio of an index?

---

<div class="post-metadata">

**Author:** ![DavidTurner](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/davidturner/32/22453_2.png) [@DavidTurner](https://discuss.elastic.co/u/DavidTurner)\
**Post date:** [January 17, 2019, 11:52am UTC](https://discuss.elastic.co/t/compression-ratio/164603/2 "2019-01-17T11:52:57Z")

</div>

It's not clear which compression ratio you are interested in. Elasticsearch exposes various metrics, such as the size of an index on disk, in the [indices stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html#indices-stats), so you can calculate a compression ratio by dividing this metric by the total size of the documents that have been indexed. Is that what you're looking for?

---

<div class="post-metadata">

**Author:** ![amitavmohanty01](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amitavmohanty01/32/58017_2.png) [@amitavmohanty01](https://discuss.elastic.co/u/amitavmohanty01)\
**Post date:** [January 17, 2019, 1:08pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/3 "2019-01-17T13:08:37Z")

</div>

> [@DavidTurner](#):
>
> Elasticsearch exposes various metrics, such as the size of an index on disk, in the [indices stats API](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-stats.html#indices-stats), so you can calculate a compression ratio by dividing this metric by the total size of the documents that have been indexed.

I agree. However, as per another [thread](https://discuss.elastic.co/t/ingest-volume/157245/2), Elasticsearch does not track incoming data volume. So, please suggest how to get the total size of documents that have been indexed.

---

<div class="post-metadata">

**Author:** ![DavidTurner](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/davidturner/32/22453_2.png) [@DavidTurner](https://discuss.elastic.co/u/DavidTurner)\
**Post date:** [January 17, 2019, 2:24pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/4 "2019-01-17T14:24:24Z")

</div>

Right, yes, as far as I know Elasticsearch doesn't track the total size of documents indexed. It's a bit of a tricky thing to measure accurately: the distributed nature of the system means that in general different shards will have indexed different sets of documents at any given point in time, and the machinery to track this statistic correctly across shard failures and primary relocations would be quite complicated. Perhaps there's a way to get an approximate answer with an aggregation? Or you could track this statistic externally?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 17, 2019, 6:28pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/5 "2019-01-17T18:28:30Z")

</div>

Wondering if that would help: [https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html](https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html)

---

<div class="post-metadata">

**Author:** ![DavidTurner](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/davidturner/32/22453_2.png) [@DavidTurner](https://discuss.elastic.co/u/DavidTurner)\
**Post date:** [January 18, 2019, 3:05pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/6 "2019-01-18T15:05:26Z")

</div>

TIL ❤

---

<div class="post-metadata">

**Author:** ![amitavmohanty01](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/amitavmohanty01/32/58017_2.png) [@amitavmohanty01](https://discuss.elastic.co/u/amitavmohanty01)\
**Post date:** [January 21, 2019, 12:12pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/7 "2019-01-21T12:12:37Z")

</div>

> [@dadoonet](#):
>
> Wondering if that would help: [https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html](https://www.elastic.co/guide/en/elasticsearch/plugins/current/mapper-size.html)

Thanks for pointing us in the right direction. This solves the purpose well.

For getting the total ingested volume, I am using the following query:

```
GET my_index-2019.01.20/_search
{
  "query": {
    "match_all": {}
  },
  "aggs": {
    "sizes": {
      "sum": {
        "field": "_size"
      }
    }
  }
}

```

The only problem is for large indices (65gb primary volume), the request times out.

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [January 21, 2019, 12:18pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/8 "2019-01-21T12:18:37Z")

</div>

If your indexed data is reasonably uniform in size maybe you could calculate the average document size based on a sample set and use this to estimate the compression ratio?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [February 18, 2019, 12:18pm UTC](https://discuss.elastic.co/t/compression-ratio/164603/9 "2019-02-18T12:18:37Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
