我们有一个 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 似乎没有该功能。