elasticsearch,aws-elasticsearch,Java,elasticsearch,Aws Elasticsearch" /> elasticsearch,aws-elasticsearch,Java,elasticsearch,Aws Elasticsearch" />

Java AWS ElasticSearch:如何将策略应用于索引

Java AWS ElasticSearch:如何将策略应用于索引,java,elasticsearch,aws-elasticsearch,Java,elasticsearch,Aws Elasticsearch,我们有一个AWS ElasticSearch域,正在向其写入记录/文档。我现在在Kibana中创建了一个索引状态/生命周期管理(ISM/ILM)策略,我可以从Kibana中将该策略应用于索引。现在,我想在从Java代码中创建索引时应用该策略,该代码处理对索引的写入(使用高级RESTAPI) 我在高级restapi中没有找到专门允许将策略分配给索引的方法,但是我认为我应该能够使用创建索引时使用的RequestOptions对象来完成。文档很薄,但我基本上应该能够在索引属性中插入一个键/值。 例如,

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

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

"settings" : {
  "index" : {
    "opendistro" : {
      "index_state_management" : {
        "policy_id" : "DefaultLifeCyclePolicy_30DayWarm_180DayDelete"
      }
    },
假设我可以在索引对象中插入一个类似的键,这似乎是合理的。下面的代码似乎应该可以工作。它运行时不会出错,但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将am ISM/ILM策略分配给索引

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

顺便说一句,我已经考虑过创建一个索引模板,它应该 该策略会在创建索引时自动执行,但OpenDistro Kibana 似乎没有那个功能

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

PUT _template/template_1
{
  "index_patterns": [
    "test-index*"
  ],
  "settings": {
    "index": {
      "opendistro": {
        "index_state_management": {
          "policy_id": "DefaultLifeCyclePolicy_30DayWarm_180DayDelete"
        }
      }
    }
  }
}
对于滚动指数:

  • 确保您有别名:
  • 模板:

  • for opendistro提到了索引模板,尽管实际上试图在AWS Elasticsearch上创建一个索引模板只会给我一个
    401
    错误。我同意索引模板是正确的方法,但它似乎在AWS opendistro版本的Kibana中不可用。“OpenDistro Kibana”和“ES Kibana”之间似乎有一些奇怪的区别;我只是假设OpenDistro one的功能比真正的少。谢谢,我找不到带有“policy_id”的文档
    
    POST /_aliases
    {
        "actions" : [
            { "add" : { "index" : "test-index-000001", "alias" : "test-index" } }
        ]
    } 
    
    
    
    PUT _template/template_1
    {
      "index_patterns": [
        "test-index*"
      ],
      "settings": {
        "index": {
          "opendistro": {
            "index_state_management": {
              "policy_id": "DefaultLifeCyclePolicy_30DayWarm_180DayDelete",
              "rollover_alias": "test-index"
            }
          }
        }
      }
    }