Search code examples
elasticsearchkibanaelasticsearch-java-apidate-mathelasticsearch-indices

delete time based indices on elastic search older than 30 days using date math expression in JAVA gives indexNotExists exception


want to delete time based indices on elastic search older than some specific (let's say 30) days using date math expression in JAVA.

Trying to implement following approach in our spring boot application using Transaport Client but getting index not exist exception.
https://www.elastic.co/guide/en/elasticsearch/reference/current/date-math-index-names.html

When the same URI encoded index name (which is passed to DELETE INDEX API) is used to search index using query GET uri_encoded_index_name on kibana, It shows that index exists.

Is there something I am missing out ?
Is there any better approach to do that without using curator and wilcard characters?

code snippet:

String indexName = "<" + indexNameStaticPart + "{now/d-30d{MMddYYYY}}>";     
String encodedIndexName = UriEncoder.encode( indexName ).replace( "/", "%2F" );      
AcknowledgedResponse response = client.admin().indices().delete( new DeleteIndexRequest( encodedIndexName ) ).actionGet();

encodedIndexName : %3Cstring__string_string__%7Bnow%2Fd-30d%7BMMddyyyy%7D%7D%3E

kibana:

GET encodedIndexName 
DELETE encodedIndexName 

Solution

  • Try it without URI encoding..

    https://discuss.elastic.co/t/delete-time-based-indices-on-elastic-search-older-than-30-days-using-date-math-expression-in-java-gives-indexnotexists-exception/171365