Search code examples
elasticsearchlogstashkibanaelastic-stack

open distro for elastic search 'source alias does not point to a write index'


I'm using open distro for elasticsearch v7.7.0, I want to manage index life cycle automatically so when a new indice is created it gets automatically attached to an ISM policy. but I'm getting this error 'source alias does not point to a write index'.

Here is my configuration:

1- Logstash output

output {
elasticsearch {
hosts => ["http://myelasticsearch"]
user => "someuser"
password => "somepassword-"
#index => "demo"
index => "demo-%{+YYYY.MM.dd.HH-mm}"
       ssl => false
       ssl_certificate_verification => false
       ilm_enabled => false
}
stdout { codec => "dots"}
}

2- ISM policy

    {
    "policy": {
        "policy_id": "hot warm delete workflow",
        "description": "hot warm delete workflow",
        "last_updated_time": 1595417446751,
        "schema_version": 1,
        "error_notification": null,
        "default_state": "hot",
        "states": [
            {
                "name": "hot",
                "actions": [
                    {
                        "rollover": {
                            "min_index_age": "1d"
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "warm"
                    }
                ]
            },
            {
                "name": "warm",
                "actions": [
                    {
                        "replica_count": {
                            "number_of_replicas": 0
                        }
                    }
                ],
                "transitions": [
                    {
                        "state_name": "delete",
                        "conditions": {
                            "min_index_age": "30d"
                        }
                    }
                ]
            },
            {
                "name": "delete",
                "actions": [
                    {
                        "delete": {}
                    }
                ],
                "transitions": []
            }
        ]
    }
}

3- Index template

  PUT _template/my_template
{
"alias": {
    "demo": {"is_write_index": true }
  },
  "index_patterns": ["demo*"],                 
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1,
    "opendistro.index_state_management.policy_id": "hot warm delete workflow",      
    "opendistro.index_state_management.rollover_alias": "demo"  
    
  }
}

I've noticed that when the alias is created it does not get 'is_write_index": true' attribute.

Any helpful comments would be appreciated.


Solution

  • I resolved the problem by myself.

    For someone who is facing the same problem here is the solution.

    1- First create a template:

    PUT _template/my_template
    {
      "index_patterns": ["demo*"],                 
      "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 1,
        "opendistro.index_state_management.policy_id": "hot warm delete workflow",      
        "opendistro.index_state_management.rollover_alias": "demo"  
        
      }
    }
    

    2- You need to bootstrap an initial index and designate it as the write index for the rollover alias specified in your index template:

    PUT demo-000001
    {
      "aliases": {
        "demo": {
          "is_write_index": true
        }
      }
    }
    

    3- Logstash output:

    output {
    elasticsearch {
    hosts => ["http://myelasticsearch"]
    user => "someuser"
    password => "somepassword-"
    index => "demo"
           ssl => false
           ssl_certificate_verification => false
           ilm_enabled => false      
    }
    stdout { codec => "dots"}
    }