微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

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

我在高级REST API中没有找到专门允许为索引分配策略的方法,但是我认为我应该能够使用创建索引时使用的RequestOptions对象来执行此操作。该文档非常薄,但是看来我应该基本上可以在Index属性中插入键/值。 例如,当我检查手动分配策略的索引时,找到分配策略的以下键。

"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似乎没有该功能

解决方法

顺便说一句,我看过创建索引模板,该模板应分配给 索引创建时自动执行该策略,但是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"
        }
      }
    }
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?