# Delete\_by\_query & \_forcemerge doesn't free disk space

**URL:** <https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352>\
**Category:** Elasticsearch\
**Created:** [April 24, 2018, 4:24pm UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352 "2018-04-24T16:24:40Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 24, 2018, 4:24pm UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/1 "2018-04-24T16:24:40Z")

</div>

Hi,

I used delete\_by\_query API to delete multiple documents and after that \_forcemerge API to remove deleted documents.  
However, when I use \_forcemerge API it finishes instantly and disk usage is the same. Why my API call doesn't do anything and how can I debug reasons for such behavior? I tried to use debug/trace log levels but not sure which logger to look at and when I enable trace on root logger there is too much logs to find anything useful.  
I know I have multiple deleted documents so I tried to use "only\_expunge\_deletes" and nothing changed. I also tried to force single segment per shard with "max\_num\_segments" but also, nothing changed.

Any suggestions?

Cluster configuration:  
40 data nodes  
3 master nodes  
ES version 5.6.4  
Daily indices (~200GB index size)  
shards: 20 primary and 1 replica

---

<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:** [April 25, 2018, 4:10am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/2 "2018-04-25T04:10:52Z")

</div>

What call did you launch exactly?

---

<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:** [April 25, 2018, 5:35am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/3 "2018-04-25T05:35:51Z")

</div>

How much disk space do you have left on the node? Merging will grow disk usage as all merged segments are created before the old ones are deleted.

---

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 25, 2018, 6:53am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/4 "2018-04-25T06:53:37Z")

</div>

I used (multiple attempts with different params):

> curl -XPOST '[http://localhost:9200/indexname/\_forcemerge](http://localhost:9200/indexname/_forcemerge)' -d '{  
> "only\_expunge\_deletes": false,  
> "max\_num\_segments": 1  
> }'

---

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 25, 2018, 6:56am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/5 "2018-04-25T06:56:05Z")

</div>

There is ~100GB free per node. Index size is ~200GB.  
There shouldn't be an issue with free disk, should it? I know that ES v2 executed \_forcemerge without checking if there is enough disk

---

<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:** [April 25, 2018, 6:59am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/6 "2018-04-25T06:59:23Z")

</div>

How many nodes do you have in the cluster?

---

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 25, 2018, 7:00am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/7 "2018-04-25T07:00:31Z")

</div>

40 data nodes and 3 master nodes

---

<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:** [April 25, 2018, 7:06am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/8 "2018-04-25T07:06:55Z")

</div>

OK, so then the index should take up relatively little space per node.

When I have used it I think I have invoked it like this:

```auto
curl -XPOST "http://localhost:9200/indexname/_forcemerge?max_num_segments=1"

```

Could you try that and see if that makes any difference?

---

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 25, 2018, 7:52am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/9 "2018-04-25T07:52:05Z")

</div>

That seems to be a solution 🙂 Is this expected behaviour or should both requests be valid?

---

<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:** [April 25, 2018, 8:03am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/10 "2018-04-25T08:03:30Z")

</div>

The documentation does refer to request parameters, so I suspect it might be expected. It would probably be worthwhile adding an example to the docs though.

---

<div class="post-metadata">

**Author:** ![mats990](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/mats990/32/37516_2.png) [@mats990](https://discuss.elastic.co/u/mats990)\
**Post date:** [April 25, 2018, 8:25am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/11 "2018-04-25T08:25:27Z")

</div>

Great, thanks a lot for the help.  
I created a PR on for documentation change [https://github.com/elastic/elasticsearch/pull/30113](https://github.com/elastic/elasticsearch/pull/30113)

---

<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:** [May 23, 2018, 8:25am UTC](https://discuss.elastic.co/t/delete-by-query-forcemerge-doesnt-free-disk-space/129352/12 "2018-05-23T08:25:28Z")

</div>

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