模拟索引模板 API

编辑

返回特定索引模板将应用的索引配置。

resp = client.indices.simulate_template(
    name="template_1",
)
print(resp)
const response = await client.indices.simulateTemplate({
  name: "template_1",
});
console.log(response);
POST /_index_template/_simulate/template_1

请求

编辑

POST /_index_template/_simulate/<index-template>

先决条件

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

路径参数

编辑
<index-template>
(可选,字符串)要模拟的索引模板的名称。 要在将模板配置添加到集群之前进行测试,请省略此参数并在请求正文中指定模板配置。

查询参数

编辑
create
(可选,布尔值)如果为 true,则仅当没有现有模板与相同的索引模式匹配时,才会使用在正文中传递的模板。 如果为 false,则模拟将使用优先级最高的模板。 请注意,在任何情况下都不会永久添加或更新模板;它仅用于模拟。 默认为 false
master_timeout
(可选,时间单位)等待主节点的时间。 如果主节点在超时过期之前不可用,则请求失败并返回错误。 默认为 30s。 也可以设置为 -1 表示请求永远不应超时。
include_defaults
(可选,布尔值) [预览] 此功能处于技术预览阶段,可能会在未来的版本中更改或删除。 Elastic 将努力修复任何问题,但技术预览中的功能不受官方 GA 功能的支持 SLA 的约束。 中的功能。 如果为 true,则在响应中返回所有默认设置。 默认为 false

请求正文

编辑
data_stream

(可选,对象)如果包含此对象,则该模板用于创建数据流及其后备索引。 支持空对象。

数据流需要一个具有 data_stream 对象的匹配索引模板。 请参阅 创建索引模板

data_stream 的属性
allow_custom_routing
(可选,布尔值)如果为 true,则数据流支持自定义路由。 默认为 false
hidden
(可选,布尔值)如果为 true,则数据流为隐藏的。 默认为 false
index_mode

(可选,字符串)要创建的数据流类型。 有效值为 null(标准数据流)、time_series时间序列数据流)和 logsdb日志数据流)。

模板的 index_mode 设置后备索引的 index.mode

index_patterns

(必需,字符串数组)用于在创建期间匹配数据流和索引名称的通配符 (*) 表达式数组。

Elasticsearch 包括几个内置索引模板。 为了避免与这些模板发生命名冲突,请参阅 避免索引模式冲突

_meta
(可选,对象)关于索引模板的可选用户元数据。 可以包含任何内容。 此映射不是由 Elasticsearch 自动生成的。
priority
(可选,整数)用于确定创建新数据流或索引时索引模板优先级的优先级。 选择优先级最高的索引模板。 如果未指定优先级,则将模板视为优先级为 0(最低优先级)。 此数字不是由 Elasticsearch 自动生成的。
template

(可选,对象)要应用的模板。 它可以选择包含 aliasesmappingssettings 配置。

template 的属性
aliases

(可选,对象数组的对象)要添加的别名。

如果索引模板包含 data_stream 对象,则这些是数据流别名。 否则,这些是索引别名。 数据流别名忽略 index_routingroutingsearch_routing 选项。

aliases 对象的属性
<alias>

(必需,对象)键是别名名称。 索引别名名称支持日期数学

对象主体包含别名的选项。 支持空对象。

<alias> 的属性
filter
(可选,查询 DSL 对象)用于限制别名可以访问的文档的查询。
index_routing
(可选,字符串)用于将索引操作路由到特定分片的值。 如果指定,此值将覆盖索引操作的 routing 值。
is_hidden
(可选,布尔值)如果为 true,则别名为隐藏的。 默认为 false。 别名的所有索引必须具有相同的 is_hidden 值。
is_write_index
(可选,布尔值)如果为 true,则索引是别名的写入索引。 默认为 false
routing
(可选,字符串)用于将索引和搜索操作路由到特定分片的值。
search_routing
(可选,字符串)用于将搜索操作路由到特定分片的值。 如果指定,此值将覆盖搜索操作的 routing 值。
mappings

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

请参阅 映射

settings
(可选,索引设置对象)索引的配置选项。 请参阅 索引设置
version
(可选,整数)用于在外部管理索引模板的版本号。 此数字不是由 Elasticsearch 自动生成的。
deprecated
(可选,布尔值)将此索引模板标记为已弃用。 在创建或更新使用已弃用组件的未弃用索引模板时,Elasticsearch 将发出弃用警告。

响应正文

编辑
overlapping

(数组)任何被指定模板取代的模板。

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

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

template 的属性
aliases

(可选,对象数组的对象)索引的别名。 如果索引模板包含 data_stream,则不支持此参数。

aliases 对象的属性
<alias>

(必需,对象)键是别名名称。 索引别名名称支持日期数学

对象主体包含别名的选项。 支持空对象。

<alias> 的属性
filter
(可选,查询 DSL 对象)用于限制别名可以访问的文档的查询。
index_routing
(可选,字符串)用于将索引操作路由到特定分片的值。 如果指定,此值将覆盖索引操作的 routing 值。
is_hidden
(可选,布尔值)如果为 true,则别名为隐藏的。 默认为 false。 别名的所有索引必须具有相同的 is_hidden 值。
is_write_index
(可选,布尔值)如果为 true,则索引是别名的写入索引。 默认为 false
routing
(可选,字符串)用于将索引和搜索操作路由到特定分片的值。
search_routing
(可选,字符串)用于将搜索操作路由到特定分片的值。 如果指定,此值将覆盖搜索操作的 routing 值。
mappings

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

请参阅 映射

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

示例

编辑

模拟现有模板

编辑

以下示例创建并模拟一个组合模板

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_template(
    name="final-template",
)
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

response = client.indices.simulate_template(
  name: 'final-template'
)
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.simulateTemplate({
  name: "final-template",
});
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/final-template 

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

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

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

显示 final-template 应用的配置

响应显示 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" : [ ]
}

来自 ct1 的分片数

来自 ct2 的副本数

来自 ct1 的映射

模拟任意模板配置

编辑

要在将模板添加到集群之前查看模板将应用的设置,您可以在请求正文中传递模板配置。 如果指定的模板的优先级高于现有模板,则将该模板用于模拟。

resp = client.indices.simulate_template(
    index_patterns=[
        "my-index-*"
    ],
    composed_of=[
        "ct2"
    ],
    priority=10,
    template={
        "settings": {
            "index.number_of_replicas": 1
        }
    },
)
print(resp)
response = client.indices.simulate_template(
  body: {
    index_patterns: [
      'my-index-*'
    ],
    composed_of: [
      'ct2'
    ],
    priority: 10,
    template: {
      settings: {
        'index.number_of_replicas' => 1
      }
    }
  }
)
puts response
const response = await client.indices.simulateTemplate({
  index_patterns: ["my-index-*"],
  composed_of: ["ct2"],
  priority: 10,
  template: {
    settings: {
      "index.number_of_replicas": 1,
    },
  },
});
console.log(response);
POST /_index_template/_simulate
{
  "index_patterns": ["my-index-*"],
  "composed_of": ["ct2"],
  "priority": 10,
  "template": {
    "settings": {
      "index.number_of_replicas": 1
    }
  }
}

响应显示任何具有较低优先级的重叠模板。

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