Automatically create an index based on an alias

Hi,

I am trying to automatically create an index that does not already exist by applying an index template with an alias definition.

Template looks like this:

PUT _template/my_template
{
    "index_patterns" : ["*"],
    "aliases" : {
        "{index}_alias" : {} 
    }
}

If I then index the first document:

POST /index1/_doc/
{
  "hello": "world"
}

It works as expected with both index and alias automatically created:

GET /_aliases
{
    "index1" : {
        "aliases" : {
            "index1_alias" : { }
        }
    }
}

My problem is that I don't know an index name until I get a document to index and I have been relying on automatic index creation so far. I would now like to only use index aliases in all API calls to future proof my application.

So, if I index the first document with an alias like this:

POST /index2_alias/_doc/
{
    "hello": "world"
}

I would like to get this:

GET /_aliases
{
    "index2" : {
        "aliases" : {
            "index2_alias" : { }
        }
    }
}

Is that possible?

Thank you,
Vlad

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