模拟索引 API

编辑

返回将通过现有索引模板应用于指定索引的索引配置。

resp = client.indices.simulate_index_template(
    name="my-index-000001",
)
print(resp)
const response = await client.indices.simulateIndexTemplate({
  name: "my-index-000001",
});
console.log(response);
POST /_index_template/_simulate_index/my-index-000001

请求

编辑

POST /_index_template/_simulate_index/<index>

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须拥有 manage_index_templatesmanage 集群权限才能使用此 API。

路径参数

编辑
<index>
(必需,字符串) 要模拟的索引名称。

查询参数

编辑
master_timeout
(可选,时间单位) 等待主节点的时间。如果主节点在超时到期前不可用,则请求失败并返回错误。默认为 30s。也可以设置为 -1 表示请求永远不应超时。
include_defaults
(可选,布尔值) [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。Elastic 将努力修复任何问题,但技术预览版的功能不受正式 GA 功能的支持 SLA 的约束。 中的功能。如果 true,则在响应中返回所有默认设置。默认为 false

响应体

编辑
overlapping

(数组) 任何也匹配索引但被更高优先级模板取代的模板。如果没有重叠的模板,则响应包含一个空数组。

overlapping 的属性
name
(字符串) 被取代的模板的名称。
index_patterns
(数组) 被取代的模板应用到的索引模式。
template

(对象) 将应用于索引的设置、映射和别名。

template 的属性
aliases

(对象) 索引的别名。如果没有任何别名适用,则响应返回一个空的 aliases 对象。

<alias>

(对象) 键是别名名称。对象体包含别名的选项。

<alias> 的属性
filter
(查询 DSL 对象) 用于限制别名可以访问的文档的查询。
index_routing
(字符串) 用于将索引操作路由到特定分片的值。这将覆盖索引操作的 routing 值。
is_hidden
(布尔值) 如果 true,则别名是隐藏的
is_write_index
(布尔值) 如果 true,则该索引是别名的写索引
routing
(字符串) 用于将索引和搜索操作路由到特定分片的值。
search_routing
(字符串) 用于将搜索操作路由到特定分片的值。这将覆盖搜索操作的 routing 值。
mappings

(可选,映射对象) 索引中字段的映射。如果指定,此映射可以包括

请参阅映射

如果没有任何映射适用,则从响应中省略。

settings

(可选,索引设置对象) 索引的配置选项。请参阅索引设置

如果没有应用任何设置,则响应包含一个空对象。

示例

编辑

以下示例显示现有模板将应用于 my-index-000001 的配置。

resp = client.cluster.put_component_template(
    name="ct1",
    template={
        "settings": {
            "index.number_of_shards": 2
        }
    },
)
print(resp)

resp1 = client.cluster.put_component_template(
    name="ct2",
    template={
        "settings": {
            "index.number_of_replicas": 0
        },
        "mappings": {
            "properties": {
                "@timestamp": {
                    "type": "date"
                }
            }
        }
    },
)
print(resp1)

resp2 = client.indices.put_index_template(
    name="final-template",
    index_patterns=[
        "my-index-*"
    ],
    composed_of=[
        "ct1",
        "ct2"
    ],
    priority=5,
)
print(resp2)

resp3 = client.indices.simulate_index_template(
    name="my-index-000001",
)
print(resp3)
response = client.cluster.put_component_template(
  name: 'ct1',
  body: {
    template: {
      settings: {
        'index.number_of_shards' => 2
      }
    }
  }
)
puts response

response = client.cluster.put_component_template(
  name: 'ct2',
  body: {
    template: {
      settings: {
        'index.number_of_replicas' => 0
      },
      mappings: {
        properties: {
          "@timestamp": {
            type: 'date'
          }
        }
      }
    }
  }
)
puts response

response = client.indices.put_index_template(
  name: 'final-template',
  body: {
    index_patterns: [
      'my-index-*'
    ],
    composed_of: [
      'ct1',
      'ct2'
    ],
    priority: 5
  }
)
puts response
const response = await client.cluster.putComponentTemplate({
  name: "ct1",
  template: {
    settings: {
      "index.number_of_shards": 2,
    },
  },
});
console.log(response);

const response1 = await client.cluster.putComponentTemplate({
  name: "ct2",
  template: {
    settings: {
      "index.number_of_replicas": 0,
    },
    mappings: {
      properties: {
        "@timestamp": {
          type: "date",
        },
      },
    },
  },
});
console.log(response1);

const response2 = await client.indices.putIndexTemplate({
  name: "final-template",
  index_patterns: ["my-index-*"],
  composed_of: ["ct1", "ct2"],
  priority: 5,
});
console.log(response2);

const response3 = await client.indices.simulateIndexTemplate({
  name: "my-index-000001",
});
console.log(response3);
PUT /_component_template/ct1                    
{
  "template": {
    "settings": {
      "index.number_of_shards": 2
    }
  }
}

PUT /_component_template/ct2                    
{
  "template": {
    "settings": {
      "index.number_of_replicas": 0
    },
    "mappings": {
      "properties": {
        "@timestamp": {
          "type": "date"
        }
      }
    }
  }
}

PUT /_index_template/final-template             
{
  "index_patterns": ["my-index-*"],
  "composed_of": ["ct1", "ct2"],
  "priority": 5
}

POST /_index_template/_simulate_index/my-index-000001 

创建一个组件模板 (ct1),将分片数设置为 2

创建第二个组件模板 (ct2),将副本数设置为 0 并定义一个映射

创建一个使用组件模板的索引模板 (final-template)

显示将应用于 my-index-000001 的配置

响应显示 final-template 应用的索引设置、映射和别名

{
  "template" : {
    "settings" : {
      "index" : {
        "number_of_shards" : "2",
        "number_of_replicas" : "0",
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        }
      }
    },
    "mappings" : {
      "properties" : {
        "@timestamp" : {
          "type" : "date"
        }
      }
    },
    "aliases" : { }
  },
  "overlapping" : [
    {
      "name" : "template_1",
      "index_patterns" : [
        "my-index-*"
      ]
    }
  ]
}