java - 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 似乎没有这个功能。
解决方案
顺便说一句,我已经研究过创建一个索引模板,它应该在创建索引时自动分配策略,但是 OpenDistro Kibana 似乎没有这个功能。
您可以通过以下方式使用索引模板在创建索引时应用 ISM 策略:
PUT _template/template_1
{
"index_patterns": [
"test-index*"
],
"settings": {
"index": {
"opendistro": {
"index_state_management": {
"policy_id": "DefaultLifeCyclePolicy_30DayWarm_180DayDelete"
}
}
}
}
}
对于展期指数:
- 确保您有别名:
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"
}
}
}
}
}
推荐阅读
- python - Python字符串正则表达式联合返回一堆空字符串
- django - 单击 django 博客卡中的阅读更多按钮后,尝试在新的 html 页面上显示完整的博客
- azure-cli - 使用 Azure CLI 和 JMESPath 进行筛选
- mongodb - mongodb的安装破坏了我的包管理器
- mysql - Mysql嵌套并声明为数组
- excel - 将数据从现有工作表复制到新的 csv 文件
- windows - Docker for Windows 网络慢
- sql-server - 无法与 SQL Server 数据库断开连接
- javascript - 无法使用响应事件
- laravel - 获取belongsToMany关系中某个根类别ID下的所有页面