I'm currently running ES 1.7.1 although the docs for this haven't changed so I'm not sure that's relevant.
The docs for these settings give a fairly decent explanation of these settings but it's a bit unclear why max_index_buffer_size would be required if index_buffer_size has been set.
Accepts either a percentage or a byte size value. It defaults to 10%, meaning that 10% of the total heap allocated to a node will be used as the indexing buffer size shared across all shards.
If the index_buffer_size is specified as a percentage, then this setting can be used to specify an absolute minimum. Defaults to 48mb.
If the index_buffer_size is specified as a percentage, then this setting can be used to specify an absolute maximum. Defaults to unbounded.
ES heap size is 10g
index_buffer_size is set to 10%
I'd assume that implies ES will share 1g of heap among the shards currently indexing.
I'd also assume that implies a max of 10% (1g) but then why would max_index_buffer_size exist.
Does "shared across all shards" imply just shards from indices currently doing indexing or does this imply all shards from all open indices share this memory?
How does index_buffer_size truly differ from max_index_buffer_size?