Index recovery prioritization

edit

Unallocated shards are recovered in order of priority, whenever possible. Indices are sorted into priority order as follows:

  • the optional index.priority setting (higher before lower)
  • the index creation date (higher before lower)
  • the index name (higher before lower)

This means that, by default, newer indices will be recovered before older indices.

Use the per-index dynamically updatable index.priority setting to customise the index prioritization order. For instance:

resp = client.indices.create(
    index="index_1",
)
print(resp)

resp1 = client.indices.create(
    index="index_2",
)
print(resp1)

resp2 = client.indices.create(
    index="index_3",
    settings={
        "index.priority": 10
    },
)
print(resp2)

resp3 = client.indices.create(
    index="index_4",
    settings={
        "index.priority": 5
    },
)
print(resp3)
response = client.indices.create(
  index: 'index_1'
)
puts response

response = client.indices.create(
  index: 'index_2'
)
puts response

response = client.indices.create(
  index: 'index_3',
  body: {
    settings: {
      'index.priority' => 10
    }
  }
)
puts response

response = client.indices.create(
  index: 'index_4',
  body: {
    settings: {
      'index.priority' => 5
    }
  }
)
puts response
const response = await client.indices.create({
  index: "index_1",
});
console.log(response);

const response1 = await client.indices.create({
  index: "index_2",
});
console.log(response1);

const response2 = await client.indices.create({
  index: "index_3",
  settings: {
    "index.priority": 10,
  },
});
console.log(response2);

const response3 = await client.indices.create({
  index: "index_4",
  settings: {
    "index.priority": 5,
  },
});
console.log(response3);
PUT index_1

PUT index_2

PUT index_3
{
  "settings": {
    "index.priority": 10
  }
}

PUT index_4
{
  "settings": {
    "index.priority": 5
  }
}

In the above example:

  • index_3 will be recovered first because it has the highest index.priority.
  • index_4 will be recovered next because it has the next highest priority.
  • index_2 will be recovered next because it was created more recently.
  • index_1 will be recovered last.

This setting accepts an integer, and can be updated on a live index with the update index settings API:

resp = client.indices.put_settings(
    index="index_4",
    settings={
        "index.priority": 1
    },
)
print(resp)
response = client.indices.put_settings(
  index: 'index_4',
  body: {
    'index.priority' => 1
  }
)
puts response
const response = await client.indices.putSettings({
  index: "index_4",
  settings: {
    "index.priority": 1,
  },
});
console.log(response);
PUT index_4/_settings
{
  "index.priority": 1
}