Set indices.fielddata.cache.size without restarting node?

Hi there guys. I'm trying to set my indices.fielddata.cache.size to 75% (with a circuit breaker of 60%, so we get alerts before we're close to out of memory), and I just had a couple of questions.

First, is that number 75% of the max memory on the machine, or is that 75% of ES_HEAP_SIZE? I figure its the latter, but I want to make sure I have a clear understanding.

Secondly, I have applied this setting in my elasticsearch.yml file, so it will take effect on start up, and when I build new nodes, however is there an api call to alter that setting on live nodes?? I'd prefer not to restart all of our data nodes if I do not have to in order to turn on this setting.

Thanks!

Any limits you can set in ES are for the heap only, that is the only memory it addresses.

You should also read https://www.elastic.co/guide/en/elasticsearch/reference/2.3/circuit-breaker.html#circuit-breaker

Thank you!

Hmm I just added the setting using:

curl -XPUT "http://$(hostname --ip-address):9200/_cluster/settings" -d'{ "persistent" : { "indices.fielddata.cache.size" : "75%" } }'

and I received:

{"acknowledged":true,"persistent":{},"transient":{}}

in response, but when I run:

curl "http://$(hostname --ip-address):9200/_cluster/settings?pretty"

to look at my settings I just get back:

{
  "persistent" : {
    "discovery" : {
      "zen" : {
        "minimum_master_nodes" : "2"
      }
    },
    "cluster" : {
      "routing" : {
        "allocation" : {
          "enable" : "all",
          "cluster_concurrent_rebalance" : "15",
          "node_concurrent_recoveries" : "15"
        }
      }
    }
  },
  "transient" : {
    "cluster" : {
      "routing" : {
        "allocation" : {
          "enable" : "all"
        }
      }
    }
  }
}

I.e., I do not see it displaying the new setting I just enacted. Is this expected, or should I see it??