首页 > 解决方案 > AWS ElasticSearch:如何将策略应用于索引

问题描述

我们有一个 AWS ElasticSearch 域,并且正在向其写入记录/文档。我现在已经在 Kibana 中创建了一个索引状态/生命周期管理 (ISM/ILM) 策略,并且可以从 Kibana 中将该策略应用于索引。我现在想在从处理索引写入的 Java 代码中创建索引时应用该策略(使用高级 REST API)。

我在高级 REST API 中没有找到专门允许将策略分配给索引的方法,但是我认为我应该能够使用创建索引时使用的 RequestOptions 对象来做到这一点。文档很薄,但似乎我应该能够基本上将键/值插入索引属性。例如,当我检查手动分配策略的索引时,找到分配策略的以下键。

"settings" : {
  "index" : {
    "opendistro" : {
      "index_state_management" : {
        "policy_id" : "DefaultLifeCyclePolicy_30DayWarm_180DayDelete"
      }
    },

假设我可以在 Index 对象中插入一个类似的键似乎是合理的。以下代码似乎应该可以工作。它确实运行没有错误,但 RequestOptions 没有任何用处。

        boolean isExisting = mAwsClient.indices().exists(new GetIndexRequest(indexNameFull), RequestOptions.DEFAULT);
        if (!isExisting) {
            RequestOptions.Builder builder = RequestOptions.DEFAULT.toBuilder();
            builder.addHeader("settings.opendistro.index_state_management.policy_id", mIndexStateMgmtPolicy);
            RequestOptions requestOptions = builder.build();

            CreateIndexRequest request = new CreateIndexRequest(indexNameFull);
            request.mapping(mapping, XContentType.JSON);
            CreateIndexResponse createIndexResponse = mAwsClient.indices().create(request, requestOptions);
        }

那么,如何使用 Java 将 ISM/ILM 策略分配给索引?

顺便说一句,我已经研究过创建一个索引模板,它应该在创建索引时自动分配策略,但是 OpenDistro Kibana 似乎没有这个功能。

标签: javaelasticsearchaws-elasticsearch

解决方案


顺便说一句,我已经研究过创建一个索引模板,它应该在创建索引时自动分配策略,但是 OpenDistro Kibana 似乎没有这个功能。

您可以通过以下方式使用索引模板在创建索引时应用 ISM 策略:

PUT _template/template_1
{
  "index_patterns": [
    "test-index*"
  ],
  "settings": {
    "index": {
      "opendistro": {
        "index_state_management": {
          "policy_id": "DefaultLifeCyclePolicy_30DayWarm_180DayDelete"
        }
      }
    }
  }
}

对于展期指数:

  1. 确保您有别名:

POST /_aliases
{
    "actions" : [
        { "add" : { "index" : "test-index-000001", "alias" : "test-index" } }
    ]
} 

  1. 模板:

PUT _template/template_1
{
  "index_patterns": [
    "test-index*"
  ],
  "settings": {
    "index": {
      "opendistro": {
        "index_state_management": {
          "policy_id": "DefaultLifeCyclePolicy_30DayWarm_180DayDelete",
          "rollover_alias": "test-index"
        }
      }
    }
  }
}

推荐阅读