索引 API
edit索引 API
edit索引API用于管理单个索引、索引设置、别名、映射和索引模板。
索引管理:
edit映射管理:
edit别名管理:
edit索引设置:
edit索引模板:
edit索引模板会自动将设置、映射和别名应用于新索引。 它们最常用于为时间序列数据配置滚动索引,以确保每个新索引具有与前一个索引相同的配置。 与数据流关联的索引模板会配置其支持索引。 有关更多信息,请参阅索引模板。
监控:
edit状态管理:
edit悬空索引:
edit别名存在 API
edit检查是否存在别名。
HEAD _alias/my-alias
先决条件
edit-
如果启用了Elasticsearch安全功能,您必须拥有
view_index_metadata或manage索引权限 用于别名。如果您指定了目标,您还必须拥有view_index_metadata或manage目标索引的权限。
路径参数
edit-
<alias> -
(可选,字符串) 要检查的别名列表,以逗号分隔。支持通配符
(
*)。 -
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流或索引列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
all。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,请求中包含在中缺失的数据流或索引时将返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。
响应代码
edit-
200 - 所有指定的别名都存在。
-
404 - 一个或多个指定的别名不存在。
别名 API
edit在一个原子操作中执行一个或多个别名操作。
POST _aliases
{
"actions": [
{
"add": {
"index": "my-data-stream",
"alias": "my-alias"
}
}
]
}
请求
editPOST _aliases
先决条件
edit-
如果启用了Elasticsearch安全功能,您必须拥有以下索引权限:
-
要使用
add或remove操作,您必须拥有别名及其数据流或索引的manage索引权限。 -
要使用
remove_index操作,您必须拥有该索引的manage索引权限。
-
要使用
查询参数
edit请求体
edit-
actions -
(必需,对象数组) 要执行的操作。
Properties of
actionsobjects-
-
(必需,对象) 键是操作类型。至少需要一个操作。
Valid
keys-
add -
添加一个数据流或索引到别名。如果别名不存在,
add操作会创建它。 -
remove - 从别名中移除一个数据流或索引。
-
remove_index - 删除一个索引。你不能对别名或数据流使用此操作。
对象体包含别名的选项。支持空对象。
Properties of
-
filter -
(可选, Query DSL 对象 用于限制别名可以访问的文档的查询。
只有
add操作支持此参数。 -
index -
(Required*, string) 操作的数据流或索引。支持通配符 (
*)。如果未指定indices,此参数是必需的。对于add和remove_index操作,匹配数据流和索引的通配符模式会返回错误。 -
indices -
(Required*, array of strings) 操作的数据流或索引。支持通配符 (
*)。如果未指定index,此参数是必需的。对于add和remove_index操作,匹配数据流和索引的通配符模式会返回错误。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。数据流别名不支持此参数。仅
add操作支持此参数。
-
is_hidden -
(可选,布尔值) 如果为
true,别名是 隐藏的。默认为false。别名的所有数据流或索引必须具有相同的is_hidden值。只有
add操作支持此参数。
-
is_write_index -
(可选,布尔值) 如果
true,则为别名设置写索引或数据流。如果一个别名指向多个索引或数据流,并且未设置
is_write_index,则该别名会拒绝写请求。如果一个索引别名指向一个索引,并且未设置is_write_index,则该索引会自动充当写索引。即使别名指向一个数据流,数据流别名也不会自动设置写数据流。只有
add操作支持此参数。
-
must_exist -
(可选, 布尔值) 影响尝试删除不存在的别名时的行为。 如果
true,删除不存在的别名将导致所有操作失败。 如果false,删除不存在的别名只会导致该删除操作失败。 默认为false。仅
remove操作支持此参数。
-
routing -
(可选,字符串)用于将索引和搜索操作路由到特定分片的值。数据流别名不支持此参数。
只有
add操作支持此参数。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。数据流别名不支持此参数。只有
add操作支持此参数。
-
-
响应体
edit-
acknowledged -
(布尔值)
如果
true,请求在timeout时间内从主节点收到了响应。 -
errors -
(布尔值)
如果
true,则至少有一个请求的操作失败。 -
action_results -
(可选,对象数组) 每个请求操作的结果。
Properties of
action_resultsobjects-
action -
(对象) 关联操作请求的描述。
Properties of
actionobject-
type -
(字符串) 关联操作的类型,可以是
add、remove或remove_index之一。 -
indices - (字符串数组) 关联操作中的索引列表。
-
aliases - (字符串数组) 关联操作中的别名列表。
-
-
status - (整数) 操作返回的HTTP状态码。
-
error -
(可选,对象) 包含有关失败操作的附加信息。
仅在操作失败时显示。
-
分析 API
edit对文本字符串执行分析并返回生成的标记。
GET /_analyze
{
"analyzer" : "standard",
"text" : "Quick Brown Foxes!"
}
路径参数
edit-
<index> -
(可选,字符串) 用于派生分析器的索引。
如果指定,
analyzer或参数将覆盖此值。如果没有指定分析器或字段, 分析API将使用索引的默认分析器。
如果没有指定索引 或者索引没有默认的分析器, 分析API使用标准分析器。
查询参数
edit-
analyzer -
(可选, 字符串) 应用于提供的
text的分析器的名称。这可以是 内置分析器,或者是已在索引中配置的分析器。如果未指定此参数, analyze API 将使用字段映射中定义的分析器。
如果没有指定字段, analyze API 使用索引的默认分析器。
如果没有指定索引, 或者索引没有默认的分析器, analyze API 使用 标准分析器。
-
attributes -
(可选, 字符串数组)
用于过滤
explain参数输出的标记属性数组。 -
char_filter - (可选,字符串数组) 用于在分词器之前预处理字符的字符过滤器数组。 请参阅字符过滤器参考以获取字符过滤器列表。
-
explain -
(可选, 布尔值)
如果为
true,响应将包含令牌属性和其他详细信息。 默认为false。 [预览] 其他详细信息的格式在Lucene中被标记为实验性,并且可能会在将来发生变化。 -
field -
(可选, 字符串) 用于派生分析器的字段。 要使用此参数, 您必须指定一个索引。
如果指定,
analyzer参数将覆盖此值。如果没有指定字段, analyze API 使用索引的默认分析器。
如果没有指定索引 或者索引没有默认的分析器, analyze API 使用 标准分析器。
-
filter - (可选,字符串数组) 用于在分词器之后应用的令牌过滤器数组。 请参阅令牌过滤器参考以获取令牌过滤器列表。
-
normalizer - (可选, 字符串) 用于将文本转换为单个标记的规范化器。 请参阅规范化器以获取规范化器列表。
-
text - (必需,字符串或字符串数组) 要分析的文本。 如果提供了字符串数组,则将其作为多值字段进行分析。
-
tokenizer - (可选,字符串) 用于将文本转换为标记的分词器。 请参阅分词器参考以获取分词器列表。
示例
edit未指定索引
edit您可以将任何内置分析器应用于文本字符串,而无需指定索引。
GET /_analyze
{
"analyzer" : "standard",
"text" : "this is a test"
}
文本字符串数组
edit如果提供了作为字符串数组的text参数,它将被分析为多值字段。
GET /_analyze
{
"analyzer" : "standard",
"text" : ["this is a test", "the second text"]
}
自定义分析器
edit您可以使用 analyze API 来测试从分词器、分词过滤器和字符过滤器构建的自定义瞬态分析器。分词过滤器使用 filter 参数:
GET /_analyze
{
"tokenizer" : "keyword",
"filter" : ["lowercase"],
"text" : "this is a test"
}
GET /_analyze
{
"tokenizer" : "keyword",
"filter" : ["lowercase"],
"char_filter" : ["html_strip"],
"text" : "this is a <b>test</b>"
}
自定义分词器、词元过滤器和字符过滤器可以在请求体中按如下方式指定:
GET /_analyze
{
"tokenizer" : "whitespace",
"filter" : ["lowercase", {"type": "stop", "stopwords": ["a", "is", "this"]}],
"text" : "this is a test"
}
特定索引
edit您也可以针对特定索引运行分析 API:
GET /analyze_sample/_analyze
{
"text" : "this is a test"
}
上述代码将对“this is a test”文本进行分析,使用与analyze_sample索引关联的默认索引分析器。也可以提供一个analyzer来使用不同的分析器:
GET /analyze_sample/_analyze
{
"analyzer" : "whitespace",
"text" : "this is a test"
}
从字段映射派生分析器
edit分析器可以根据字段映射推导出来,例如:
GET /analyze_sample/_analyze
{
"field" : "obj1.field1",
"text" : "this is a test"
}
将基于在映射中为 obj1.field1 配置的分析器进行分析(如果没有配置,则使用默认的索引分析器)。
规范化器
edit可以为带有与analyze_sample索引关联的normalizer的关键字字段提供normalizer。
GET /analyze_sample/_analyze
{
"normalizer" : "my_normalizer",
"text" : "BaR"
}
或者通过构建一个自定义的瞬态规范化器,使用令牌过滤器和字符过滤器。
GET /_analyze
{
"filter" : ["lowercase"],
"text" : "BaR"
}
解释分析
edit如果您想获取更详细的细节,请将 explain 设置为 true(默认为 false)。它将输出每个标记的所有标记属性。
您可以通过设置 attributes 选项来过滤您想要输出的标记属性。
附加详细信息的格式在Lucene中被标记为实验性的,并且可能会在将来发生变化。
GET /_analyze
{
"tokenizer" : "standard",
"filter" : ["snowball"],
"text" : "detailed output",
"explain" : true,
"attributes" : ["keyword"]
}
请求返回以下结果:
{
"detail" : {
"custom_analyzer" : true,
"charfilters" : [ ],
"tokenizer" : {
"name" : "standard",
"tokens" : [ {
"token" : "detailed",
"start_offset" : 0,
"end_offset" : 8,
"type" : "<ALPHANUM>",
"position" : 0
}, {
"token" : "output",
"start_offset" : 9,
"end_offset" : 15,
"type" : "<ALPHANUM>",
"position" : 1
} ]
},
"tokenfilters" : [ {
"name" : "snowball",
"tokens" : [ {
"token" : "detail",
"start_offset" : 0,
"end_offset" : 8,
"type" : "<ALPHANUM>",
"position" : 0,
"keyword" : false
}, {
"token" : "output",
"start_offset" : 9,
"end_offset" : 15,
"type" : "<ALPHANUM>",
"position" : 1,
"keyword" : false
} ]
} ]
}
}
设置令牌限制
edit生成过多的令牌可能会导致节点内存不足。 以下设置允许限制可以生成的令牌数量:
-
index.analyze.max_token_count -
使用
_analyzeAPI 可以生成的最大令牌数。 默认值是10000。如果生成的令牌数超过此限制,将会抛出一个错误。未指定索引的_analyze端点将始终使用10000值作为限制。此设置允许您控制特定索引的限制:
PUT /analyze_sample
{
"settings" : {
"index.analyze.max_token_count" : 20000
}
}
GET /analyze_sample/_analyze
{
"text" : "this is a test"
}
分析索引磁盘使用情况 API
edit此功能处于技术预览阶段,可能会在未来的版本中进行更改或移除。Elastic 将努力修复任何问题,但技术预览版中的功能不受官方 GA 功能支持 SLA 的约束。
分析索引或数据流中每个字段的磁盘使用情况。 此API可能不支持在以前的Elasticsearch版本中创建的索引。 小型索引的结果可能不准确,因为索引的某些部分可能不会被API分析。
POST /my-index-000001/_disk_usage?run_expensive_tasks=true
请求
editPOST /
路径参数
edit-
<target> - (必需,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。建议使用单个索引(或数据流的最新后备索引)执行此API,因为该API会显著消耗资源。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
flush -
(可选,布尔值) 如果
true,API 在分析之前执行刷新操作。如果false,响应可能不包括未提交的数据。默认为true。 -
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
run_expensive_tasks -
(必需,布尔值) 分析字段磁盘使用是资源密集型的。要使用此API,此参数必须设置为
true。默认为false。 -
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
示例
editPOST /my-index-000001/_disk_usage?run_expensive_tasks=true
API返回:
{
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"my-index-000001": {
"store_size": "929mb",
"store_size_in_bytes": 974192723,
"all_fields": {
"total": "928.9mb",
"total_in_bytes": 973977084,
"inverted_index": {
"total": "107.8mb",
"total_in_bytes": 113128526
},
"stored_fields": "623.5mb",
"stored_fields_in_bytes": 653819143,
"doc_values": "125.7mb",
"doc_values_in_bytes": 131885142,
"points": "59.9mb",
"points_in_bytes": 62885773,
"norms": "2.3kb",
"norms_in_bytes": 2356,
"term_vectors": "2.2kb",
"term_vectors_in_bytes": 2310,
"knn_vectors": "0b",
"knn_vectors_in_bytes": 0
},
"fields": {
"_id": {
"total": "49.3mb",
"total_in_bytes": 51709993,
"inverted_index": {
"total": "29.7mb",
"total_in_bytes": 31172745
},
"stored_fields": "19.5mb",
"stored_fields_in_bytes": 20537248,
"doc_values": "0b",
"doc_values_in_bytes": 0,
"points": "0b",
"points_in_bytes": 0,
"norms": "0b",
"norms_in_bytes": 0,
"term_vectors": "0b",
"term_vectors_in_bytes": 0,
"knn_vectors": "0b",
"knn_vectors_in_bytes": 0
},
"_primary_term": {...},
"_seq_no": {...},
"_version": {...},
"_source": {
"total": "603.9mb",
"total_in_bytes": 633281895,
"inverted_index": {...},
"stored_fields": "603.9mb",
"stored_fields_in_bytes": 633281895,
"doc_values": "0b",
"doc_values_in_bytes": 0,
"points": "0b",
"points_in_bytes": 0,
"norms": "0b",
"norms_in_bytes": 0,
"term_vectors": "0b",
"term_vectors_in_bytes": 0,
"knn_vectors": "0b",
"knn_vectors_in_bytes": 0
},
"context": {
"total": "28.6mb",
"total_in_bytes": 30060405,
"inverted_index": {
"total": "22mb",
"total_in_bytes": 23090908
},
"stored_fields": "0b",
"stored_fields_in_bytes": 0,
"doc_values": "0b",
"doc_values_in_bytes": 0,
"points": "0b",
"points_in_bytes": 0,
"norms": "2.3kb",
"norms_in_bytes": 2356,
"term_vectors": "2.2kb",
"term_vectors_in_bytes": 2310,
"knn_vectors": "0b",
"knn_vectors_in_bytes": 0
},
"context.keyword": {...},
"message": {...},
"message.keyword": {...}
}
}
}
清除缓存 API
edit清除一个或多个索引的缓存。对于数据流,该API会清除数据流的备份索引的缓存。
POST /my-index-000001/_cache/clear
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
fielddata -
(可选, 布尔值) 如果
true, 清除字段缓存。使用
fields参数来清除特定字段的缓存。 -
fields -
(可选, 字符串) 用于限制
fielddata参数的字段名称的逗号分隔列表。默认为所有字段。
此参数不支持对象或字段别名。
-
index - (可选, 字符串) 用于限制请求的索引名称的逗号分隔列表。
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
query -
(可选, 布尔值)
如果为
true, 则清除查询缓存。 -
request -
(可选, 布尔值)
如果
true, 清除请求缓存。
示例
edit清除特定缓存
edit默认情况下,
清除缓存 API 会清除所有缓存。
您可以通过将以下查询参数设置为 true 来仅清除特定缓存:
-
fielddata -
查询 -
请求
清除特定字段的缓存
edit要仅清除特定字段的缓存,请使用fields查询参数。
清除多个数据流和索引的缓存
editPOST /my-index-000001,my-index-000002/_cache/clear
清除所有数据流和索引的缓存
editPOST /_cache/clear
克隆索引 API
edit克隆一个现有的索引。
POST /my-index-000001/_clone/cloned-my-index-000001
先决条件
edit例如,
以下请求阻止对 my_source_index 的写操作,
因此可以使用
添加索引块 API 进行克隆。
仍然允许删除索引等元数据更改。
PUT /my_source_index/_block/write
数据流上的当前写入索引无法被克隆。为了克隆当前的写入索引,数据流必须首先被滚动更新,以便创建一个新的写入索引,然后可以克隆之前的写入索引。
描述
edit使用克隆索引 API 将现有索引克隆到一个新索引中,其中每个原始主分片都会被克隆到新索引中的一个新主分片中。
Elasticsearch 不会将索引模板应用于生成的索引。该 API 也不会从原始索引复制索引元数据。索引元数据包括别名、ILM 阶段定义和 CCR 跟随者信息。例如,如果您克隆一个 CCR 跟随者索引,生成的克隆将不会是跟随者索引。
克隆 API 将大多数索引设置从源索引复制到生成的索引,但 index.number_of_replicas 和 index.auto_expand_replicas 除外。要在生成的索引中设置副本数量,请在克隆请求中配置这些设置。
克隆的工作原理
edit克隆的工作原理如下:
- 首先,它会创建一个与源索引定义相同的新目标索引。
- 然后,它将源索引中的段硬链接到目标索引中。(如果文件系统不支持硬链接,则所有段都会被复制到新索引中,这是一个更加耗时的过程。)
- 最后,它会像刚刚重新打开的已关闭索引一样恢复目标索引。
克隆一个索引
edit要将 my_source_index 克隆到一个名为 my_target_index 的新索引中,请发出以下请求:
POST /my_source_index/_clone/my_target_index
上述请求在目标索引被添加到集群状态后立即返回——它不会等待克隆操作开始。
索引只有在满足以下要求时才能被克隆:
- 目标索引必须不存在。
- 源索引的主分片数量必须与目标索引相同。
- 处理克隆过程的节点必须有足够的可用磁盘空间来容纳现有索引的第二个副本。
The _clone API 类似于 create index API
并且接受目标索引的 settings 和 aliases 参数:
POST /my_source_index/_clone/my_target_index
{
"settings": {
"index.number_of_shards": 5
},
"aliases": {
"my_search_indices": {}
}
}
映射不能在_clone请求中指定。源索引的映射将被用于目标索引。
监控克隆过程
edit克隆过程可以通过_cat recovery
API进行监控,或者可以使用cluster health API来等待,直到所有主分片都被分配,方法是将wait_for_status
参数设置为yellow。
The _clone API 在目标索引被添加到集群状态后立即返回,此时还没有分配任何分片。在这个阶段,所有分片都处于 unassigned 状态。如果由于任何原因,目标索引无法被分配,其主分片将保持 unassigned 状态,直到它可以在该节点上被分配。
一旦主分片被分配,它将进入状态 initializing,并且克隆过程开始。当克隆操作完成时,分片将变为 active。此时,Elasticsearch 将尝试分配任何副本,并可能决定将主分片重新定位到另一个节点。
路径参数
edit-
<index> - (必需,字符串) 要克隆的源索引名称。
-
<target-index> -
(必需,字符串) 要创建的目标索引的名称。
索引名称必须满足以下条件:
- 仅限小写
-
不能包含
\,/,*,?,",<,>,|, ` ` (空格字符),,,# -
7.0 之前的索引可以包含冒号 (
:),但已被弃用,7.0 及以上版本将不再支持 -
不能以
-,_,+开头 -
不能是
.或.. - 不能超过 255 字节(注意是字节,因此多字节字符会更快达到 255 字节的限制)
-
以
.开头的名称已被弃用,除了 隐藏索引 和插件管理的内部索引
查询参数
edit-
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
请求体
edit-
aliases -
(可选,对象的对象) 结果索引的别名。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,Query DSL 对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
settings - (可选, 索引设置对象) 目标索引的配置选项。 参见 索引设置。
关闭索引 API
edit关闭一个索引。
POST /my-index-000001/_close
请求
editPOST /
描述
edit您可以使用关闭索引 API 来关闭已打开的索引。
一个已关闭的索引被阻止进行读/写操作,并且不允许所有已打开索引允许的操作。无法在已关闭的索引中索引文档或搜索文档。这使得已关闭的索引不必维护用于索引或搜索文档的内部数据结构,从而减少了集群的开销。
当打开或关闭一个索引时,主节点负责重新启动索引分片以反映索引的新状态。然后,分片将经历正常的恢复过程。已打开/关闭的索引数据会由集群自动复制,以确保始终安全地保留足够的分片副本。
您可以打开和关闭多个索引。如果请求明确引用了一个不存在的索引,则会抛出错误。可以使用ignore_unavailable=true参数禁用此行为。
默认情况下,您必须明确命名您正在打开或关闭的索引。
要使用_all、*或其他通配符表达式来打开或关闭索引,请将action.destructive_requires_name设置更改为false。
此设置也可以通过集群更新设置API进行更改。
关闭的索引会占用大量磁盘空间,这可能会在托管环境中引发问题。可以通过集群设置 API 将 cluster.indices.close.enable 设置为 false 来禁用关闭索引。默认值为 true。
路径参数
edit-
<index> -
(可选, 字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。
要关闭所有索引,请使用
_all或*。 默认情况下,您必须明确指定要关闭的索引名称。 要使用_all、*或其他通配符表达式指定要关闭的索引,请将action.destructive_requires_name设置更改为false。 您可以在elasticsearch.yml文件中更新此设置, 或使用 集群更新设置 API。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
示例
edit以下示例展示了如何关闭索引:
POST /my-index-000001/_close
API返回以下响应:
{
"acknowledged": true,
"shards_acknowledged": true,
"indices": {
"my-index-000001": {
"closed": true
}
}
}
创建索引 API
edit创建一个新索引。
PUT /my-index-000001
请求
editPUT /
路径参数
edit-
<index> -
(必需,字符串) 您希望创建的索引名称。
索引名称必须满足以下条件:
- 仅限小写
-
不能包含
\,/,*,?,",<,>,|, ` ` (空格字符),,,# -
7.0 之前的索引可以包含冒号 (
:),但已被弃用,在 7.0+ 中将不再支持 -
不能以
-,_,+开头 -
不能是
.或.. - 不能超过 255 字节(注意是字节,因此多字节字符会更快达到 255 字节的限制)
-
以
.开头的名称已弃用,除了 隐藏索引 和由插件管理的内部索引
查询参数
edit-
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
请求体
edit-
aliases -
(可选,对象的对象) 索引的别名。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,Query DSL 对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 映射。
-
settings - (可选, 索引设置对象) 索引的配置选项。参见 索引设置。
示例
edit索引设置
edit每个创建的索引都可以有与其关联的特定设置,这些设置在主体中定义:
PUT /my-index-000001
{
"settings": {
"index": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
}
或更简化
PUT /my-index-000001
{
"settings": {
"number_of_shards": 3,
"number_of_replicas": 2
}
}
您不必在settings部分中显式指定index部分。
有关在创建索引时可以设置的所有不同索引级别设置的更多信息,请查看索引模块部分。
映射
edit创建索引 API 允许提供映射定义:
PUT /test
{
"settings": {
"number_of_shards": 1
},
"mappings": {
"properties": {
"field1": { "type": "text" }
}
}
}
别名
edit创建索引 API 还允许提供一组 别名:
PUT /test
{
"aliases": {
"alias_1": {},
"alias_2": {
"filter": {
"term": { "user.id": "kimchy" }
},
"routing": "shard-1"
}
}
}
索引别名也支持日期数学。
PUT /logs
{
"aliases": {
"<logs_{now/M}>": {}
}
}
等待活动分片
edit默认情况下,索引创建仅在每个分片的副本已启动或请求超时时才会向客户端返回响应。索引创建响应将指示发生了什么:
{
"acknowledged": true,
"shards_acknowledged": true,
"index": "logs"
}
acknowledged 表示索引是否在集群中成功创建,而
shards_acknowledged 表示在超时之前是否为索引中的每个分片启动了所需数量的分片副本。请注意,即使
acknowledged 或 shards_acknowledged 为 false,索引创建仍然可能成功。
这些值仅表示操作是否在超时之前完成。如果
acknowledged 为 false,则表示我们在集群状态更新为包含新创建的索引之前超时,但它可能很快就会被创建。如果 shards_acknowledged
为 false,则表示我们在启动所需数量的分片(默认情况下仅为主分片)之前超时,即使集群状态已成功更新以反映新创建的索引(即 acknowledged=true)。
我们可以通过索引设置 index.write.wait_for_active_shards 来更改仅等待主分片启动的默认值(请注意,更改此设置也会影响所有后续写操作的 wait_for_active_shards 值):
PUT /test
{
"settings": {
"index.write.wait_for_active_shards": "2"
}
}
或通过请求参数 wait_for_active_shards:
PUT /test?wait_for_active_shards=2
关于wait_for_active_shards及其可能值的详细解释可以在这里找到。
创建或更新别名 API
edit将数据流或索引添加到别名。
PUT my-data-stream/_alias/my-alias
路径参数
edit-
<alias> - (必需,字符串) 要更新的别名。如果别名不存在,请求将创建它。索引别名名称支持 日期数学。
-
<target> -
(必需,字符串) 要添加的数据流或索引的逗号分隔列表。
支持通配符 (
*)。同时匹配数据流和索引的通配符模式会返回错误。
查询参数
edit请求体
edit-
filter - (可选, 查询DSL对象 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。数据流别名不支持此参数。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是 隐藏的。默认为false。别名的所有数据流或索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果
true,则为别名设置写索引或数据流。如果一个别名指向多个索引或数据流,并且未设置
is_write_index,则该别名会拒绝写请求。如果一个索引别名指向一个索引,并且未设置is_write_index,则该索引会自动充当写索引。即使别名指向一个数据流,数据流别名也不会自动设置写数据流。 -
must_exist -
(可选, 布尔值)
影响尝试删除不存在的别名时的行为。
如果
true,删除不存在的别名将导致所有操作失败。 如果false,删除不存在的别名只会导致该删除操作失败。 默认为false。 -
routing - (可选,字符串)用于将索引和搜索操作路由到特定分片的值。数据流别名不支持此参数。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。数据流别名不支持此参数。
创建或更新组件模板 API
edit创建或更新组件模板。组件模板是构建用于指定索引的索引模板的构建块,包括映射、设置和别名。
PUT _component_template/template_1
{
"template": {
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z yyyy"
}
}
}
}
}
请求
editPUT /_component_template/<组件模板>
描述
edit索引模板可以由多个组件模板组成。
要使用组件模板,请在索引模板的 composed_of 列表中指定它。
组件模板仅作为匹配索引模板的一部分应用于新的数据流和索引。
在索引模板或创建索引请求中直接指定的设置和映射会覆盖组件模板中指定的任何设置或映射。
组件模板仅在创建索引期间使用。对于数据流,这包括数据流创建和流的后备索引的创建。对组件模板的更改不会影响现有索引,包括流的后备索引。
组件模板中的注释
edit您可以在组件模板中使用C风格的/* */块注释。 您可以在请求体的任何位置包含注释, 除了在开头的花括号之前。
路径参数
edit-
<component-template> -
(必需, 字符串) 要创建的组件模板的名称。
Elasticsearch 包括以下内置组件模板:
-
logs@mappings -
logs@settings -
metrics@mappings -
metrics@settings -
metrics@tsdb-settings -
synthetics@mapping -
synthetics@settings
Elastic Agent 使用这些模板来配置其数据流的备份索引。 如果您想自定义这些模板,请不要覆盖它们,因为它们可能在更新后被重置。 相反,请在托管索引模板的
composed_of部分中查找*@custom组件模板。 这些自定义组件模板允许您自定义托管索引模板的映射,而无需覆盖托管索引模板或组件模板。 请注意,自定义组件模板可能尚不存在。 在使用 创建或更新组件模板 创建它们后,它们将被索引模板拾取。 请参阅 更改数据流的映射和设置 以了解如何将更改应用于相应的数据流。为了避免与内置和Fleet管理的组件模板命名冲突,请避免在您自己的组件模板名称中使用
@。该规则的例外是*@custom组件模板,它们允许您安全地自定义托管索引模板。 -
查询参数
edit-
create -
(可选, 布尔值)
如果为
true,此请求不能替换或更新现有的组件模板。 默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
请求体
edit-
template -
(必需, 对象) 这是要应用的模板,可以选择性地包含一个
mappings、settings或aliases配置。Properties of
template-
aliases -
(可选,对象的对象) 要添加的别名。
如果索引模板包含一个
data_stream对象,这些是数据流别名。否则,这些是索引别名。数据流别名忽略index_routing、routing和search_routing选项。Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选, 查询DSL对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选, 字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选, 布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选, 布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选, 字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选, 字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 映射。
-
settings - (可选, 索引设置对象) 索引的配置选项。参见 索引设置。
-
-
version - (可选, 整数) 用于外部管理组件模板的版本号。 此编号不是由Elasticsearch自动生成或递增的。
-
allow_auto_create -
(可选,布尔值)
此设置会覆盖
action.auto_create_index集群设置的值。如果在模板中设置为true,则即使通过actions.auto_create_index禁用了索引的自动创建,也可以使用该模板自动创建索引。如果设置为false,则与模板匹配的索引或数据流必须始终显式创建,并且可能永远不会自动创建。 -
_meta - (可选, 对象) 关于组件模板的可选用户元数据。可以包含任何内容。 此映射不会由Elasticsearch自动生成。
-
deprecated - (可选, 布尔值) 将此组件模板标记为已弃用。 当引用已弃用的组件模板来创建或更新非弃用的索引模板时, Elasticsearch 将发出弃用警告。 end::template[]
示例
edit带有索引别名的组件模板
edit您可以在组件模板中包含索引别名。
组件模板版本控制
edit您可以使用 version 参数为组件模板添加版本号。外部系统可以使用这些版本号来简化模板管理。
参数 version 是可选的,并且不会被Elasticsearch自动生成或使用。
要取消设置版本,请在不指定版本的情况下替换模板。
PUT /_component_template/template_1
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"version": 123
}
要检查版本,您可以使用获取组件模板 API。
组件模板元数据
edit您可以使用 _meta 参数将任意元数据添加到组件模板中。
这个用户定义的对象存储在集群状态中,
因此保持其简短是可取的。
参数 _meta 是可选的,不会被 Elasticsearch 自动生成或使用。
要取消设置_meta,请在不指定的情况下替换模板。
PUT /_component_template/template_1
{
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"_meta": {
"description": "set number of shards to one",
"serialization": {
"class": "MyComponentTemplate",
"id": 10
}
}
}
要检查 _meta,您可以使用 获取组件模板 API。
创建或更新索引模板 API
edit创建或更新索引模板。索引模板定义了设置、映射和别名,这些可以自动应用于新索引。
PUT /_index_template/template_1
{
"index_patterns" : ["template*"],
"priority" : 1,
"template": {
"settings" : {
"number_of_shards" : 2
}
}
}
请求
editPUT /_index_template/
描述
editElasticsearch 根据与索引名称匹配的通配符模式将模板应用于新索引。
索引模板在数据流或索引创建时应用。 对于数据流,这些设置和映射在流的后备索引创建时应用。
在创建索引请求中指定的设置和映射会覆盖索引模板中指定的任何设置或映射。
索引模板的更改不会影响现有索引,包括数据流的现有后备索引。
索引模板中的注释
edit您可以在索引模板中使用C风格的/* */块注释。您可以在请求体中的任何位置包含注释,除了在开括号之前。
路径参数
edit-
<index-template> - (必需, 字符串) 要创建的索引模板的名称。
查询参数
edit-
create -
(可选,布尔值)
如果为
true,此请求不能替换或更新现有的索引模板。默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
请求体
edit-
composed_of - (可选,字符串数组) 一个有序的组件模板名称列表。组件模板按照指定的顺序合并,这意味着最后指定的组件模板具有最高的优先级。有关示例,请参见 组合多个组件模板。
-
data_stream -
(可选, 对象) 如果包含此对象,模板将用于创建数据流及其支持的索引。支持空对象。
数据流需要一个匹配的索引模板,其中包含一个
data_stream对象。 请参阅创建索引模板。 -
index_patterns -
(必需,字符串数组) 用于在创建时匹配数据流和索引名称的通配符 (
*) 表达式数组。Elasticsearch 包含多个内置的索引模板。为了避免与这些模板发生命名冲突,请参阅 避免索引模式冲突。
-
_meta - (可选, 对象) 关于索引模板的可选用户元数据。可以包含任何内容。 此映射不会由Elasticsearch自动生成。
-
priority - (可选, 整数) 用于确定在新数据流或索引创建时索引模板的优先级。具有最高优先级的索引模板将被选择。如果没有指定优先级,模板将被视为优先级为0(最低优先级)。 此数字不会由Elasticsearch自动生成。
-
template -
(可选, 对象) 要应用的模板。它可以选择性地包括一个
aliases、mappings或settings配置。Properties of
template-
aliases -
(可选,对象的对象) 要添加的别名。
如果索引模板包含一个
data_stream对象,这些是数据流别名。否则,这些是索引别名。数据流别名忽略index_routing、routing和search_routing选项。Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
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 将发出弃用警告。
示例
edit带有索引别名的索引模板
edit您可以在索引模板中包含索引别名。
多个匹配的模板
edit如果多个索引模板匹配新索引或数据流的名称,则使用优先级最高的模板。例如:
PUT /_index_template/template_1
{
"index_patterns" : ["temp*"],
"priority" : 0,
"template": {
"settings" : {
"number_of_shards" : 1,
"number_of_replicas": 0
},
"mappings" : {
"_source" : { "enabled" : false }
}
}
}
PUT /_index_template/template_2
{
"index_patterns" : ["template*"],
"priority" : 1,
"template": {
"settings" : {
"number_of_shards" : 2
},
"mappings" : {
"_source" : { "enabled" : true }
}
}
}
对于以 template* 开头的索引,_source 将被启用,并且该索引将有两个主分片和一个副本,因为只有 template_2 会被应用。
不允许在同一优先级下创建具有重叠索引模式的多个模板,并且在尝试创建与现有索引模板匹配的模板时,将会抛出错误。
模板版本控制
edit您可以使用 version 参数为索引模板添加版本号。外部系统可以使用这些版本号来简化模板管理。
参数 version 是可选的,并且不会被Elasticsearch自动生成或使用。
要取消设置版本,请在不指定版本的情况下替换模板。
PUT /_index_template/template_1
{
"index_patterns" : ["foo", "bar"],
"priority" : 0,
"template": {
"settings" : {
"number_of_shards" : 1
}
},
"version": 123
}
要检查版本,您可以使用获取索引模板 API。
模板元数据
edit您可以使用 _meta 参数将任意元数据添加到索引模板中。
这个用户定义的对象存储在集群状态中,
因此保持其简短是可取的。
参数 _meta 是可选的,不会被 Elasticsearch 自动生成或使用。
要取消设置_meta,请在不指定的情况下替换模板。
PUT /_index_template/template_1
{
"index_patterns": ["foo", "bar"],
"template": {
"settings" : {
"number_of_shards" : 3
}
},
"_meta": {
"description": "set number of shards to three",
"serialization": {
"class": "MyIndexTemplate",
"id": 17
}
}
}
要检查 _meta,您可以使用 获取索引模板 API。
数据流定义
edit要为数据流使用索引模板,模板必须包含一个data_stream对象。请参阅创建索引模板。
PUT /_index_template/template_1
{
"index_patterns": ["logs-*"],
"data_stream": { }
}
组合别名、映射和设置
edit当在索引模板中为composed_of字段指定多个组件模板时,它们会按照指定的顺序合并,这意味着后面的组件模板会覆盖前面的组件模板。父索引模板中的任何映射、设置或别名都会在此之后合并。最后,索引请求本身的任何配置也会被合并。
在这个例子中,两个组件模板的顺序改变了索引的分片数量:
PUT /_component_template/template_with_2_shards
{
"template": {
"settings": {
"index.number_of_shards": 2
}
}
}
PUT /_component_template/template_with_3_shards
{
"template": {
"settings": {
"index.number_of_shards": 3
}
}
}
PUT /_index_template/template_1
{
"index_patterns": ["t*"],
"composed_of": ["template_with_2_shards", "template_with_3_shards"]
}
在这种情况下,匹配 t* 的索引将有三个主分片。如果组合模板的顺序被反转,索引将有两个主分片。
映射定义是递归合并的,这意味着后面的映射组件可以引入新的字段映射并更新映射配置。如果一个字段映射已经包含在较早的组件中,它的定义将被后面的定义完全覆盖。
这种递归合并策略不仅适用于字段映射,还适用于根选项,如dynamic_templates和meta。如果较早的组件包含一个dynamic_templates块,那么默认情况下新的dynamic_templates条目会被附加到末尾。如果已经存在具有相同键的条目,则它会被新的定义覆盖。
创建或更新索引模板 API
edit本文档是关于遗留索引模板的内容,这些模板已被弃用,并将被Elasticsearch 7.8中引入的可组合模板所取代。有关可组合模板的信息,请参阅索引模板。
创建或更新索引模板。
PUT _template/template_1
{
"index_patterns": ["te*", "bar*"],
"settings": {
"number_of_shards": 1
},
"mappings": {
"_source": {
"enabled": false
},
"properties": {
"host_name": {
"type": "keyword"
},
"created_at": {
"type": "date",
"format": "EEE MMM dd HH:mm:ss Z yyyy"
}
}
}
}
请求
editPUT /_template/
描述
edit索引模板定义了在创建新索引时可以自动应用的设置和映射。 Elasticsearch 根据与索引名称匹配的索引模式将模板应用于新索引。
可组合模板始终优先于传统模板。 如果没有可组合模板匹配新索引, 则根据其顺序应用匹配的传统模板。
索引模板仅在创建索引时应用。 对索引模板的更改不会影响现有索引。 在创建索引 API 请求中指定的设置和映射 会覆盖索引模板中指定的任何设置或映射。
索引模板中的注释
edit您可以在索引模板中使用C风格的/* */块注释。 您可以在请求体中的任何位置包含注释, 除了在开括号之前。
获取模板
edit参见 获取索引模板 (旧版)。
路径参数
edit-
<index-template> - (必需,字符串) 要创建的索引模板的名称。
查询参数
edit-
create -
(可选, 布尔值)
如果为
true,此请求不能替换或更新现有的索引模板。 默认为false。 -
order -
(可选, 整数) 如果索引匹配多个模板,Elasticsearch 应用此模板的顺序。
具有较低
order值的模板首先合并。 具有较高order值的模板稍后合并, 覆盖具有较低值的模板。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
请求体
edit-
index_patterns - (必需,字符串数组) 用于在创建时匹配索引名称的通配符表达式数组。
-
aliases -
(可选,对象的对象) 索引的别名。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,Query DSL 对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 映射。
-
settings - (可选, 索引设置对象) 索引的配置选项。参见 索引设置。
-
version - (可选, 整数) 用于外部管理索引模板的版本号。 此编号不由Elasticsearch自动生成。
示例
edit带有索引别名的索引模板
edit您可以在索引模板中包含索引别名。
匹配多个模板的索引
edit多个索引模板可能会匹配一个索引,在这种情况下,设置和映射都会合并到索引的最终配置中。合并的顺序可以通过order参数来控制,较低的顺序会先应用,较高的顺序会覆盖它们。例如:
PUT /_template/template_1
{
"index_patterns" : ["te*"],
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"_source" : { "enabled" : false }
}
}
PUT /_template/template_2
{
"index_patterns" : ["tes*"],
"order" : 1,
"settings" : {
"number_of_shards" : 1
},
"mappings" : {
"_source" : { "enabled" : true }
}
}
上述内容将禁用存储_source,但对于以tes*开头的索引,_source仍将启用。注意,对于映射,合并是“深层次”的,这意味着可以在更高阶的模板中轻松添加/覆盖基于对象/属性的映射,而较低阶的模板则提供基础。
具有相同顺序值的多个匹配模板将导致非确定性的合并顺序。
模板版本控制
edit您可以使用 version 参数
为索引模板添加一个可选的版本号。
外部系统可以使用这些版本号
来简化模板管理。
参数 version 是完全可选的,并且不会由 Elasticsearch 自动生成。
要取消设置版本,请在不指定版本的情况下替换模板。
PUT /_template/template_1
{
"index_patterns" : ["my-index-*"],
"order" : 0,
"settings" : {
"number_of_shards" : 1
},
"version": 123
}
要检查版本,
您可以使用获取索引模板 API
并结合filter_path查询参数
以仅返回版本号:
GET /_template/template_1?filter_path=*.version
API返回以下响应:
{
"template_1" : {
"version" : 123
}
}
删除组件模板 API
edit删除现有的组件模板。
DELETE _component_template/template_1
提供的
请求
editDELETE /_component_template/
路径参数
edit-
<component-template> - (必需,字符串) 用于限制请求的组件模板名称的逗号分隔列表或通配符表达式。
删除悬空索引 API
edit删除一个悬空索引。
请求
editDELETE /_dangling/<index-uuid>?accept_data_loss=true
描述
edit如果 Elasticsearch 遇到当前集群状态中不存在的索引数据,这些索引将被视为悬空索引。例如,如果你在 Elasticsearch 节点离线时删除了超过 cluster.indices.tombstones.size 个索引,就可能发生这种情况。
通过引用其UUID删除悬空索引。使用列出悬空索引API来定位索引的UUID。
路径参数
edit-
<index-uuid> - (必需,字符串) 要删除的索引的UUID。您可以使用 List dangling indices API找到此信息。
删除别名 API
edit从别名中移除数据流或索引。
DELETE my-data-stream/_alias/my-alias
路径参数
edit-
<alias> -
(必需,字符串) 要移除的别名列表,以逗号分隔。支持通配符
(
*)。要移除所有别名,请使用*或_all。 -
<target> -
(必需,字符串) 用于限制请求的逗号分隔的数据流或索引列表。支持通配符 (
*)。
删除索引 API
edit删除一个或多个索引。
DELETE /my-index-000001
请求
editDELETE /
描述
edit删除索引会删除其文档、分片和元数据。它不会删除相关的 Kibana 组件,例如数据视图、可视化或仪表板。
您不能删除数据流的当前写入索引。要删除索引,您必须滚动更新数据流,以便创建新的写入索引。然后,您可以使用删除索引API来删除之前的写入索引。
路径参数
edit-
<index> -
(必需,字符串) 要删除的索引的逗号分隔列表。您不能指定 索引别名。
默认情况下,此参数不支持通配符(
*)或_all。要使用通配符或_all,请将action.destructive_requires_name集群设置设置为false。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open,closed。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
删除索引模板 API
edit删除一个索引模板。
DELETE /_index_template/my-index-template
路径参数
edit-
<index-template> -
(必需,字符串)
用于限制请求的索引模板名称的逗号分隔列表。支持通配符
(
*) 表达式。
删除索引模板 API
edit删除一个旧版索引模板。
DELETE /_template/my-legacy-index-template
请求
editDELETE /_template/
路径参数
edit-
<legacy-index-template> -
(必需,字符串)
要删除的旧索引模板的名称。支持通配符 (
*) 表达式。
存在 API
edit检查数据流、索引或别名是否存在。
HEAD my-data-stream
请求
editHEAD <目标>
路径参数
edit-
<target> -
(可选,字符串) 以逗号分隔的数据流、索引和别名列表。
支持通配符 (
*)。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
include_defaults -
(可选,布尔值) 如果
true,返回响应中的所有默认设置。 默认为false。 -
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。
响应代码
edit-
200 - 所有目标都存在。
-
404 - 一个或多个指定的目标不存在。
字段使用统计 API
edit此功能处于技术预览阶段,可能会在未来的版本中进行更改或移除。Elastic 将努力修复任何问题,但技术预览版中的功能不受官方 GA 功能支持 SLA 的约束。
返回索引中每个分片和字段的字段使用信息。 当查询在集群上运行时,字段使用统计信息会自动捕获。 访问给定字段的每个分片级别的搜索请求,即使在该请求期间多次访问,也计为一次使用。
GET /my-index-000001/_field_usage_stats
请求
editGET /
路径参数
edit-
<index> - (可选,字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。
查询参数
edit-
allow_no_indices -
(可选, 布尔值)
如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
-
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
fields -
(可选,字符串) 逗号分隔的字段列表或通配符表达式,用于包含在统计信息中。
响应体
edit响应正文报告了支持索引中字段的数据结构的每个分片使用计数。 即使请求多次访问同一字段,给定请求也会将每个计数最多增加1。
-
any - (整数) 表示对该字段的任何类型的使用(例如通过倒排索引、存储字段、文档值等), 使得在给定的搜索请求中,任何使用都被计数一次。
-
inverted_index -
(对象) 倒排索引 由
index映射参数启用,并通过为字段设置index_options进行配置。Properties of
inverted_index:-
terms - (整数) 表示 terms 在 倒排索引 中的使用情况,回答问题“该字段的倒排索引是否被使用?”。
-
postings - (整数) 表示包含给定术语的文档ID的 posting list 的使用情况。
-
proximity - (整数) 表示在 倒排索引 中对 positions、offsets 或 payloads 的任何使用情况,使得在给定的搜索请求中,任何使用情况都被计算一次。
-
positions - (整数) 表示在 倒排索引 中对 position 数据(术语的顺序)的使用情况。
-
term_frequencies - (整数) 表示在 倒排索引 中对 term frequencies 的使用情况,这些频率用于计算分数。
-
offsets - (整数) 表示在 倒排索引 中对 offsets 的使用情况,这些偏移量存储术语的起始和结束字符偏移量。
-
payloads - (整数) 表示在 倒排索引 中对 payloads 的使用情况, 例如通过 分隔的payload token filter,或由用户定义的分析组件和插件。
-
-
stored_fields -
(整数)
表示存储字段的使用。这些字段通过
store映射选项启用, 并通过指定stored_fields查询选项来访问。 请注意,_source和_id字段默认存储,并且它们的使用在此处计数。 -
doc_values -
(整数)
表示使用doc values,这些主要用于排序和聚合。这些是通过
doc_values映射参数启用的。 -
points - (整数) 表示使用Lucene的PointValues,这是大多数数值字段数据类型的基础,包括空间数据类型、数字、日期等。 这些用于查询/聚合的范围、计数、分桶、最小/最大值、直方图、空间等操作。
-
norms - (整数) 表示使用了包含用于评分的索引时提升值的norms。
-
term_vectors - (整数) 表示使用词向量,这允许在搜索时检索文档的词项。 用途包括高亮显示和类似查询。
-
knn_vectors - (整数) 表示使用knn_vectors字段类型, 主要用于k-近邻 (kNN) 搜索。
示例
edit以下请求检索索引 my-index-000001 在当前可用分片上的字段使用信息。
GET /my-index-000001/_field_usage_stats
API返回以下响应:
{
"_shards": {
"total": 1,
"successful": 1,
"failed": 0
},
"my-index-000001": {
"shards": [
{
"tracking_id": "MpOl0QlTQ4SYYhEe6KgJoQ",
"tracking_started_at_millis": 1625558985010,
"routing": {
"state": "STARTED",
"primary": true,
"node": "gA6KeeVzQkGURFCUyV-e8Q",
"relocating_node": null
},
"stats" : {
"all_fields": {
"any": "6",
"inverted_index": {
"terms" : 1,
"postings" : 1,
"proximity" : 1,
"positions" : 0,
"term_frequencies" : 1,
"offsets" : 0,
"payloads" : 0
},
"stored_fields" : 2,
"doc_values" : 1,
"points" : 0,
"norms" : 1,
"term_vectors" : 0,
"knn_vectors" : 0
},
"fields": {
"_id": {
"any" : 1,
"inverted_index": {
"terms" : 1,
"postings" : 1,
"proximity" : 1,
"positions" : 0,
"term_frequencies" : 1,
"offsets" : 0,
"payloads" : 0
},
"stored_fields" : 1,
"doc_values" : 0,
"points" : 0,
"norms" : 0,
"term_vectors" : 0,
"knn_vectors" : 0
},
"_source": {...},
"context": {...},
"message.keyword": {...}
}
}
}
]
}
}
刷新 API
edit刷新一个或多个数据流或索引。
POST /my-index-000001/_flush
描述
edit刷新数据流或索引是指确保当前仅存储在事务日志中的任何数据也永久存储在Lucene索引中。当重新启动时,Elasticsearch会重放事务日志中的任何未刷新操作到Lucene索引中,以将其恢复到重新启动之前的状态。Elasticsearch会根据需要自动触发刷新,使用启发式方法在未刷新的事务日志大小与执行每次刷新的成本之间进行权衡。
一旦每个操作都被刷新,它就会永久存储在Lucene索引中。这可能意味着不需要在事务日志中维护它的额外副本。事务日志由多个文件组成,称为代,Elasticsearch会在不再需要时删除任何代文件,从而释放磁盘空间。
也可以使用 flush API 触发一个或多个索引的刷新操作,尽管用户很少需要直接调用此 API。如果在索引一些文档后调用 flush API,那么成功的响应表明 Elasticsearch 已经刷新了在调用 flush API 之前索引的所有文档。
路径参数
edit-
<target> -
(可选,字符串) 逗号分隔的数据流、索引和别名列表,用于刷新。支持通配符 (
*)。要刷新所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
force -
(可选,布尔值) 如果
true, 请求将强制刷新, 即使索引中没有需要提交的更改。 默认为false。您可以使用此参数来增加事务日志的生成编号。
此参数被视为内部参数。
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
wait_if_ongoing -
(可选, 布尔值) 如果
true, 刷新操作会阻塞直到执行 当另一个刷新操作正在运行时。如果
false, 当另一个刷新操作正在运行时, Elasticsearch 会返回一个错误。默认为
true。
强制合并 API
edit强制对一个或多个索引的分片进行合并。 对于数据流,API强制对流的备份索引的分片进行合并。
POST /my-index-000001/_forcemerge
描述
edit使用force merge API来强制对一个或多个索引的分片进行合并。合并通过将一些段合并在一起,减少了每个分片中的段数量,并且释放了被删除文档占用的空间。合并通常会自动进行,但有时手动触发合并是有用的。
我们建议仅对只读索引(意味着该索引不再接收写入)进行强制合并。 当文档被更新或删除时,旧版本不会立即被移除,而是被软删除并标记为“墓碑”。这些软删除的文档会在常规段合并期间自动清理。但强制合并可能会产生非常大的(> 5GB)段,这些段不符合常规合并的条件。因此,软删除文档的数量可能会迅速增加,导致磁盘使用率更高和搜索性能更差。如果您定期对正在接收写入的索引进行强制合并,这也可能使快照成本更高,因为新文档无法增量备份。
强制合并期间的块
edit调用此API会阻塞,直到合并完成(除非请求包含wait_for_completion=false,默认为true)。如果客户端连接在完成之前丢失,则强制合并过程将继续在后台进行。任何对相同索引进行强制合并的新请求也将阻塞,直到正在进行的强制合并完成。
异步运行强制合并
edit如果请求包含wait_for_completion=false,Elasticsearch
会执行一些预检操作,启动请求,并返回一个
任务,您可以使用它来获取任务的状态。但是,您不能取消此任务,因为强制合并任务是不可取消的。Elasticsearch
会在_tasks/处创建此任务的记录文档。当您完成任务后,应删除任务文档,以便Elasticsearch
可以回收空间。
强制合并多个索引
edit您可以通过以下方式在一次请求中强制合并多个索引:
- 一个或多个包含多个后备索引的数据流
- 多个索引
- 一个或多个别名
- 集群中的所有数据流和索引
每个目标分片分别使用
force_merge 线程池进行强制合并。默认情况下,每个节点只有一个
force_merge 线程,这意味着该节点上的分片一次只能强制合并一个。如果你扩展了节点上的
force_merge 线程池,那么它将并行强制合并其分片。
强制合并会使正在合并的分片的存储暂时增加,因为在将所有段重写为新段时,如果max_num_segments参数设置为1,可能需要多达其三倍的可用空间。
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
flush -
(可选,布尔值)
如果为
true, Elasticsearch 在强制合并后对索引执行刷新。 默认为true。 -
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
max_num_segments -
(可选, 整数) 要合并的段数。 要完全合并索引, 将其设置为
1。默认检查是否需要执行合并。 如果是,则执行合并。
您不能在同一请求中同时指定此参数和
only_expunge_deletes。 -
only_expunge_deletes -
(可选, 布尔值) 如果为
true, 将删除所有包含超过index.merge.policy.expunge_deletes_allowed(默认为 10) 百分比的已删除文档的段。 默认为false。在Lucene中, 一个文档不会从一个段落中删除; 只是被标记为删除。 在合并过程中, 会创建一个新的段落, 该段落不包含那些被删除的文档。
您不能在同一请求中指定此参数和
max_num_segments。 -
wait_for_completion -
(可选, 布尔值) 如果
true,请求将阻塞直到操作完成。 默认为true。
获取别名 API
edit检索一个或多个别名的信息。
GET my-data-stream/_alias/my-alias
先决条件
edit-
如果启用了Elasticsearch安全功能,您必须拥有
view_index_metadata或manage索引权限 对于别名。如果您指定了目标,您还必须拥有view_index_metadata或manage索引权限对于目标。
路径参数
edit-
<alias> -
(可选,字符串) 要检索的别名列表,以逗号分隔。支持通配符 (
*)。要检索所有别名,请省略此参数或使用*或_all。 -
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流或索引列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
all。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,请求中包含在中缺失的数据流或索引时将返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。
获取组件模板 API
edit检索一个或多个组件模板的信息。
GET /_component_template/template_1
请求
editGET /_component_template/
路径参数
edit-
<component-template> -
(可选, 字符串)
用于限制请求的组件模板名称的逗号分隔列表。
支持通配符 (
*) 表达式。
查询参数
edit-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
include_defaults -
(可选, 布尔值) 功能处于
[技术预览]
此功能处于技术预览阶段,可能会在未来的版本中更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受正式 GA 功能支持 SLA 的约束。
。如果
true,则在响应中返回所有默认设置。 默认为false。
获取字段映射 API
edit检索一个或多个字段的映射定义。对于数据流,API检索流的支持索引的字段映射。
如果你不需要一个完整的映射,或者如果一个索引映射包含大量字段,这个API非常有用。
GET /my-index-000001/_mapping/field/user
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。 -
<field> - (可选,字符串) 用于限制返回信息的字段列表或通配符表达式,以逗号分隔。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
-
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
include_defaults -
(可选,布尔值) 如果
true,响应将包含默认映射值。 默认为false。
示例
edit带有索引设置的示例
edit您可以在创建新索引时提供字段映射。以下创建索引 API 请求创建了 publications 索引,并包含多个字段映射。
PUT /publications
{
"mappings": {
"properties": {
"id": { "type": "text" },
"title": { "type": "text" },
"abstract": { "type": "text" },
"author": {
"properties": {
"id": { "type": "text" },
"name": { "type": "text" }
}
}
}
}
}
以下仅返回字段 title 的映射:
GET publications/_mapping/field/title
API返回以下响应:
{
"publications": {
"mappings": {
"title": {
"full_name": "title",
"mapping": {
"title": {
"type": "text"
}
}
}
}
}
}
指定字段
editget mapping API 允许您指定一个以逗号分隔的字段列表。
例如,要选择author字段的id,您必须使用其全名author.id。
GET publications/_mapping/field/author.id,abstract,name
返回:
{
"publications": {
"mappings": {
"author.id": {
"full_name": "author.id",
"mapping": {
"id": {
"type": "text"
}
}
},
"abstract": {
"full_name": "abstract",
"mapping": {
"abstract": {
"type": "text"
}
}
}
}
}
}
获取字段映射 API 也支持通配符表示法。
GET publications/_mapping/field/a*
返回:
{
"publications": {
"mappings": {
"author.name": {
"full_name": "author.name",
"mapping": {
"name": {
"type": "text"
}
}
},
"abstract": {
"full_name": "abstract",
"mapping": {
"abstract": {
"type": "text"
}
}
},
"author.id": {
"full_name": "author.id",
"mapping": {
"id": {
"type": "text"
}
}
}
}
}
}
多个目标和字段
editget field mapping API 可用于通过单个请求从多个数据流或索引中获取多个字段的映射。
The 和 请求路径参数都支持逗号分隔的列表和通配符表达式。
您可以省略参数或使用值*或_all来针对集群中的所有数据流和索引。
同样地,你可以省略参数或使用值*来检索目标数据流或索引中所有字段的映射。
然而,参数不支持_all值。
例如,以下请求检索名为 my-index-000001 或 my-index-000002 的任何数据流或索引中 message 字段的映射。
GET /my-index-000001,my-index-000002/_mapping/field/message
以下请求检索集群中任何数据流或索引中的message和user.id字段的映射。
GET /_all/_mapping/field/message
以下请求检索集群中任何数据流或索引中具有id属性的字段的映射。
GET /_all/_mapping/field/*.id
获取索引 API
edit返回一个或多个索引的信息。对于数据流,API返回关于流的后备索引的信息。
GET /my-index-000001
请求
editGET /
路径参数
edit-
<target> -
(必需,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
features -
(可选,字符串)
返回有关特定索引功能的信息。支持逗号分隔的值。有效值为
aliases、mappings和settings。 默认为aliases,mappings,settings。 -
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
include_defaults -
(可选,布尔值) 如果
true,返回响应中的所有默认设置。 默认为false。 -
ignore_unavailable -
(可选, 布尔值)
如果为
false,则请求目标缺失索引时返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
获取索引设置 API
edit返回一个或多个索引的设置信息。对于数据流,API返回流的后备索引的设置信息。
GET /my-index-000001/_settings
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。 -
<setting> - (可选, 字符串) 用于限制请求的设置名称的逗号分隔列表或通配符表达式。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
include_defaults -
(可选,布尔值) 如果
true,返回响应中的所有默认设置。 默认为false。 -
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
获取索引模板 API
edit返回一个或多个索引模板的信息。
GET /_index_template/template_1
请求
editGET /_index_template/
先决条件
edit-
如果启用了Elasticsearch安全功能,您必须拥有
manage_index_templates或manage集群权限才能使用此API,或者拥有monitor集群权限以检索模板。
路径参数
edit(可选,字符串) 要返回的模板的名称。接受通配符表达式。如果省略,则返回所有模板。
查询参数
edit-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
include_defaults -
(可选, 布尔值) 功能处于
[技术预览]
此功能处于技术预览阶段,可能会在未来的版本中更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受正式 GA 功能支持 SLA 的约束。
。如果
true,则在响应中返回所有默认设置。 默认为false。
获取索引模板 API
edit本文档是关于遗留索引模板的内容,这些模板已被弃用,并将被Elasticsearch 7.8中引入的可组合模板所取代。有关可组合模板的信息,请参阅索引模板。
检索一个或多个索引模板的信息。
GET /_template/template_1
请求
editGET /_template/
路径参数
edit-
<index-template> -
(必需,字符串) 用于限制请求的索引模板名称的逗号分隔列表。支持通配符 (
*) 表达式。要返回所有索引模板,请省略此参数或使用值
_all或*。
获取映射 API
edit检索一个或多个索引的映射定义。对于数据流,API 检索流的后备索引的映射。
GET /my-index-000001/_mapping
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
导入悬空索引 API
edit导入一个悬空索引。
请求
editPOST /_dangling/<index-uuid>?accept_data_loss=true
描述
edit如果 Elasticsearch 遇到当前集群状态中不存在的索引数据,这些索引将被视为悬空索引。例如,如果你在 Elasticsearch 节点离线时删除了超过 cluster.indices.tombstones.size 个索引,就可能发生这种情况。
通过引用其UUID将单个索引导入集群。使用列出悬空索引API来定位索引的UUID。
路径参数
edit-
<index-uuid> - (必需,字符串) 要导入的索引的UUID,您可以使用 列出悬空索引 API找到。
查询参数
edit-
accept_data_loss -
(必需, 布尔值)
此字段必须设置为
true以导入一个悬空索引。因为 Elasticsearch 无法知道悬空索引数据来自何处或确定哪些分片副本是最新的,哪些是陈旧的,它无法保证导入的数据 表示索引在集群中最后一次存在时的最新状态。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
示例
edit以下示例展示了如何导入一个悬空索引:
POST /_dangling/zmM4e0JtBkeUjiHD-MihPQ?accept_data_loss=true
API返回以下响应:
{
"acknowledged" : true
}
索引恢复 API
edit返回一个或多个索引的正在进行和已完成的分片恢复信息。对于数据流,API返回流的后备索引的信息。
GET /my-index-000001/_recovery
描述
edit使用索引恢复 API 获取有关正在进行和已完成的分片恢复的信息。
分片恢复是指初始化一个分片副本的过程,例如从快照中恢复主分片或从主分片创建副本分片。当分片恢复完成时,恢复的分片可用于搜索和索引。
恢复会在以下过程中自动进行:
您可以使用recovery或cat recovery API来确定分片恢复的原因。
索引恢复API仅报告当前存在于集群中的分片副本的已完成恢复信息。它仅报告每个分片副本的最后一次恢复,并且不报告有关早期恢复的历史信息,也不报告有关不再存在的分片副本的恢复信息。这意味着如果一个分片副本完成恢复后,Elasticsearch将其重新定位到不同的节点,那么关于原始恢复的信息将不会显示在恢复API中。
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
active_only -
(可选,布尔值)
如果为
true, 响应仅包括正在进行中的分片恢复。 默认为false。 -
detailed -
(可选,布尔值)
如果为
true, 响应将包含有关分片恢复的详细信息。 默认为false。 -
index - (可选, 字符串) 用于限制请求的索引名称的逗号分隔列表或通配符表达式。
响应体
edit-
id - (整数) 分片的ID。
-
type -
(字符串) 分片的恢复源。返回的值包括:
-
STAGE -
(字符串) 恢复阶段。 返回的值可以包括:
-
INIT - 恢复尚未开始。
-
INDEX - 读取索引元数据并将字节从源复制到目标。
-
VERIFY_INDEX - 验证索引的完整性。
-
TRANSLOG - 重放事务日志。
-
FINALIZE - 清理。
-
DONE - 完成。
-
-
primary -
(布尔值)
如果
true, 则该分片是主分片。 -
start_time - (字符串) 恢复开始的时间戳。
-
stop_time - (字符串) 恢复完成的时间戳。
-
total_time_in_millis - (字符串) 恢复分片所需的总时间,单位为毫秒。
-
source -
(对象) 恢复源。 这可以包括:
- 如果从快照恢复,则包括仓库描述
- 源节点的描述
-
target - (对象) 目标节点。
-
index - (对象) 物理索引恢复的统计信息。
-
translog - (对象) 关于事务日志恢复的统计信息。
-
start - (对象) 关于打开和启动索引的时间统计。
示例
edit获取多个数据流和索引的恢复信息
editGET index1,index2/_recovery?human
获取集群中所有数据流和索引的分段信息
editGET /_recovery?human
API返回以下响应:
{
"index1" : {
"shards" : [ {
"id" : 0,
"type" : "SNAPSHOT",
"stage" : "INDEX",
"primary" : true,
"start_time" : "2014-02-24T12:15:59.716",
"start_time_in_millis": 1393244159716,
"stop_time" : "0s",
"stop_time_in_millis" : 0,
"total_time" : "2.9m",
"total_time_in_millis" : 175576,
"source" : {
"repository" : "my_repository",
"snapshot" : "my_snapshot",
"index" : "index1",
"version" : "{version}",
"restoreUUID": "PDh1ZAOaRbiGIVtCvZOMww"
},
"target" : {
"id" : "ryqJ5lO5S4-lSFbGntkEkg",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"index" : {
"size" : {
"total" : "75.4mb",
"total_in_bytes" : 79063092,
"reused" : "0b",
"reused_in_bytes" : 0,
"recovered" : "65.7mb",
"recovered_in_bytes" : 68891939,
"recovered_from_snapshot" : "0b",
"recovered_from_snapshot_in_bytes" : 0,
"percent" : "87.1%"
},
"files" : {
"total" : 73,
"reused" : 0,
"recovered" : 69,
"percent" : "94.5%"
},
"total_time" : "0s",
"total_time_in_millis" : 0,
"source_throttle_time" : "0s",
"source_throttle_time_in_millis" : 0,
"target_throttle_time" : "0s",
"target_throttle_time_in_millis" : 0
},
"translog" : {
"recovered" : 0,
"total" : 0,
"percent" : "100.0%",
"total_on_start" : 0,
"total_time" : "0s",
"total_time_in_millis" : 0
},
"verify_index" : {
"check_index_time" : "0s",
"check_index_time_in_millis" : 0,
"total_time" : "0s",
"total_time_in_millis" : 0
}
} ]
}
}
此响应包括关于恢复单个分片的单个索引的信息。恢复的来源是快照仓库,恢复的目标是my_es_node节点。
响应还包括恢复的文件数量和字节数及其百分比。
获取详细的恢复信息
edit要获取恢复中的物理文件列表,请将detailed查询参数设置为true。
GET _recovery?human&detailed=true
API返回以下响应:
{
"index1" : {
"shards" : [ {
"id" : 0,
"type" : "EXISTING_STORE",
"stage" : "DONE",
"primary" : true,
"start_time" : "2014-02-24T12:38:06.349",
"start_time_in_millis" : "1393245486349",
"stop_time" : "2014-02-24T12:38:08.464",
"stop_time_in_millis" : "1393245488464",
"total_time" : "2.1s",
"total_time_in_millis" : 2115,
"source" : {
"id" : "RGMdRc-yQWWKIBM4DGvwqQ",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"target" : {
"id" : "RGMdRc-yQWWKIBM4DGvwqQ",
"host" : "my.fqdn",
"transport_address" : "my.fqdn",
"ip" : "10.0.1.7",
"name" : "my_es_node"
},
"index" : {
"size" : {
"total" : "24.7mb",
"total_in_bytes" : 26001617,
"reused" : "24.7mb",
"reused_in_bytes" : 26001617,
"recovered" : "0b",
"recovered_in_bytes" : 0,
"recovered_from_snapshot" : "0b",
"recovered_from_snapshot_in_bytes" : 0,
"percent" : "100.0%"
},
"files" : {
"total" : 26,
"reused" : 26,
"recovered" : 0,
"percent" : "100.0%",
"details" : [ {
"name" : "segments.gen",
"length" : 20,
"recovered" : 20
}, {
"name" : "_0.cfs",
"length" : 135306,
"recovered" : 135306,
"recovered_from_snapshot": 0
}, {
"name" : "segments_2",
"length" : 251,
"recovered" : 251,
"recovered_from_snapshot": 0
}
]
},
"total_time" : "2ms",
"total_time_in_millis" : 2,
"source_throttle_time" : "0s",
"source_throttle_time_in_millis" : 0,
"target_throttle_time" : "0s",
"target_throttle_time_in_millis" : 0
},
"translog" : {
"recovered" : 71,
"total" : 0,
"percent" : "100.0%",
"total_on_start" : 0,
"total_time" : "2.0s",
"total_time_in_millis" : 2025
},
"verify_index" : {
"check_index_time" : 0,
"check_index_time_in_millis" : 0,
"total_time" : "88ms",
"total_time_in_millis" : 88
}
} ]
}
}
响应包括任何已恢复的物理文件的列表及其大小。
响应还包括恢复各个阶段的计时,以毫秒为单位:
- 索引检索
- Translog 重放
- 索引启动时间
此响应表明恢复已完成。
所有恢复,无论是正在进行还是已完成,都会保留在集群状态中,并可能随时被报告。
要仅返回有关正在进行恢复的信息,请将active_only查询参数设置为true。
索引段 API
edit返回关于索引分片中Lucene段的低级信息。对于数据流,API返回关于流的后备索引的信息。
GET /my-index-000001/_segments
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
<vector_formats> -
(可选, 布尔值)
如果为
true,则每个段落中字段使用的向量格式的列表将包含在输出属性中。默认为false。 -
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。
响应体
edit-
<segment> -
(字符串)
段的名称,例如
_0。段名称由段生成派生,并在分片的目录中用于创建文件名。 -
generation -
(整数)
代数编号,例如
0。Elasticsearch 为每次写入的段递增此代数编号。Elasticsearch 然后使用此编号来派生段名称。 -
num_docs - (整数) 由Lucene报告的文档数量。这不包括已删除的文档,并将任何嵌套文档与其父文档分别计数。它还排除了最近索引但尚未属于某个段的文档。
-
deleted_docs - (整数) Lucene报告的已删除文档数量,可能高于或低于您执行的删除操作数量。此数量不包括最近执行的删除操作,这些操作尚未属于某个段。如果这样做有意义,已删除的文档将由自动合并过程清理。此外,Elasticsearch会创建额外的已删除文档,以内部跟踪分片上最近的操作历史。
-
size_in_bytes -
(整数)
段所使用的磁盘空间,例如
50kb。 -
committed -
(布尔值) 如果
true, 段将被同步到磁盘。同步的段可以在硬重启后存活。如果
false, 未提交段的数据也会存储在事务日志中,以便 Elasticsearch 能够在下次启动时重放更改。 -
search -
(布尔值) 如果为
true, 则该段是可搜索的。如果
false, 该段可能已被写入磁盘 但需要一个 刷新 才能被搜索到。 -
version - (字符串) 用于写入段的Lucene版本。
-
compound -
(布尔值)
如果
true,Lucene将段中的所有文件合并为一个文件以节省文件描述符。 -
attributes - (对象) 包含关于(i)是否启用了高压缩,(ii)每个字段的向量格式的信息。
示例
edit获取特定数据流或索引的分段信息
editGET /test/_segments
获取多个数据流和索引的分段信息
editGET /test1,test2/_segments
获取集群中所有数据流和索引的分段信息
editGET /_segments
API返回以下响应:
{
"_shards": ...
"indices": {
"test": {
"shards": {
"0": [
{
"routing": {
"state": "STARTED",
"primary": true,
"node": "zDC_RorJQCao9xf9pg3Fvw"
},
"num_committed_segments": 0,
"num_search_segments": 1,
"segments": {
"_0": {
"generation": 0,
"num_docs": 1,
"deleted_docs": 0,
"size_in_bytes": 3800,
"committed": false,
"search": true,
"version": "7.0.0",
"compound": true,
"attributes": {
}
}
}
}
]
}
}
}
}
索引分片存储 API
edit检索一个或多个索引中副本分片的存储信息。对于数据流,API检索流的后备索引的存储信息。
GET /my-index-000001/_shard_stores
描述
edit索引分片存储API返回以下信息:
- 每个副本分片所在的节点
- 每个副本分片的分配ID
- 每个副本分片的唯一ID
- 在打开分片索引时遇到的任何错误 或来自早期故障的错误
默认情况下,API 仅返回未分配的主分片或有一个或多个未分配副本分片的存储信息。
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
status -
(可选,字符串) 逗号分隔的分片健康状态列表, 用于限制请求。
有效值包括:
-
green - 主分片和所有副本分片都已分配。
-
yellow - 一个或多个副本分片未分配。
-
red - 主分片未分配。
-
all - 返回所有分片, 无论健康状态如何。
默认为
黄色,红色。 -
-
max_concurrent_shard_requests -
(可选,整数) 协调节点发送的并发分片级别请求的最大数量。默认为
100。较大的值可能会使针对多个分片的请求更快响应,但也可能会对其他集群操作产生更大的影响。
示例
edit获取特定数据流或索引的分片存储信息
editGET /test/_shard_stores
获取多个数据流和索引的分片存储信息
editGET /test1,test2/_shard_stores
获取所有数据流和索引的分片存储信息
editGET /_shard_stores
根据集群健康状况获取分片存储信息
edit您可以使用 status 查询参数来根据分片健康状况限制返回的信息。
以下请求仅返回有关已分配的主分片和副本分片的信息。
GET /_shard_stores?status=green
API返回以下响应:
{
"indices": {
"my-index-000001": {
"shards": {
"0": {
"stores": [
{
"sPa3OgxLSYGvQ4oPs-Tajw": {
"name": "node_t0",
"ephemeral_id" : "9NlXRFGCT1m8tkvYCMK-8A",
"transport_address": "local[1]",
"external_id": "node_t0",
"attributes": {},
"roles": [...],
"version": "8.10.0",
"min_index_version": 7000099,
"max_index_version": 8100099
},
"allocation_id": "2iNySv_OQVePRX-yaRH_lQ",
"allocation" : "primary|replica|unused"
"store_exception": ...
}
]
}
}
}
}
}
索引统计 API
edit返回一个或多个索引的统计信息。对于数据流,API会检索流的后备索引的统计信息。
GET /my-index-000001/_stats
描述
edit使用索引统计 API 获取一个或多个数据流和索引的高级聚合和统计信息。
默认情况下,返回的统计信息是索引级别的,包含primaries和total的聚合。primaries是仅主分片的值。total是主分片和副本分片的累积值。
要获取分片级别的统计信息,请将level参数设置为shards。
当移动到另一个节点时,分片的分片级统计信息会被清除。尽管该分片不再是节点的一部分,但该节点保留了分片所贡献的任何节点级统计信息。
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。 -
<index-metric> -
(可选,字符串) 用于限制请求的指标的逗号分隔列表。 支持的指标包括:
-
_all - 返回所有统计信息。
-
completion - Completion suggester 统计信息。
-
dense_vector - 索引的密集向量的总数。 索引刷新 可能会影响此统计信息。
-
docs - 文档数量,未合并的已删除文档数量,以及总大小(以字节为单位)。 索引刷新 可能会影响此统计信息。
-
fielddata - Fielddata 统计信息。
-
flush - Flush 统计信息。
-
get - 获取统计信息, 包括缺失的统计信息。
-
indexing - Indexing 统计信息。
-
merge - Merge 统计信息。
-
query_cache - Query cache 统计信息。
-
refresh - Refresh 统计信息。
-
request_cache - Shard request cache 统计信息。
-
search -
搜索统计信息,包括建议统计信息。
您可以通过添加额外的
groups参数来包含自定义组的统计信息 (搜索操作可以与一个或多个组相关联)。groups参数接受逗号分隔的组名列表。 使用_all返回所有组的统计信息。 -
segments -
所有打开段的内存使用情况。
如果
include_segment_file_sizes参数为true, 此指标包括每个 Lucene 索引文件的聚合磁盘使用情况。 -
sparse_vector - 索引的稀疏向量的总数。
索引刷新可能会影响此统计信息。
-
查询参数
edit-
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
fields -
(可选,字符串) 逗号分隔的字段列表或通配符表达式,用于包含在统计信息中。
用作默认列表,除非在
completion_fields或fielddata_fields参数中提供了特定的字段列表。 -
completion_fields -
(可选,字符串)
以逗号分隔的字段列表或通配符表达式,用于包含在
fielddata和suggest统计信息中。 -
fielddata_fields -
(可选,字符串)
以逗号分隔的字段列表或通配符表达式,用于包含在
fielddata统计信息中。 -
forbid_closed_indices -
(可选,布尔值)
如果为
true,则不会从已关闭的索引中收集统计信息。 默认为true。 -
groups -
(可选,字符串)
逗号分隔的搜索组列表
包含在
搜索统计信息中。 -
level -
(可选, 字符串) 指示统计信息是在集群、索引还是分片级别聚合的。 如果请求了分片级别,则会显示一些额外的 分片特定统计信息。
有效值为:
-
cluster -
indices -
shards
-
-
include_segment_file_sizes -
(可选, 布尔值)
如果
true,调用将报告每个Lucene索引文件的聚合磁盘使用情况(仅在请求段统计信息时适用)。默认为false。 -
include_unloaded_segments -
(可选,布尔值) 如果为
true,响应将包含来自未加载到内存中的分段的信息。默认为false。
索引模板存在 API
edit检查是否存在旧版索引模板。
HEAD /_template/template_1
请求
editHEAD /_template/
路径参数
edit-
<index-template> -
(必需,字符串)
用于限制请求的索引模板名称的逗号分隔列表。支持通配符
(
*) 表达式。
查询参数
edit-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
local -
(可选,布尔值) 如果
true,请求仅从本地节点检索信息。默认为false,这意味着信息从主节点检索。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。
响应代码
edit-
200 - 表示所有指定的索引模板都存在。
-
404 - 指示一个或多个指定的索引模板不存在。
列出悬空索引 API
edit列出悬空索引。
请求
editGET /_dangling
描述
edit如果 Elasticsearch 遇到当前集群状态中不存在的索引数据,这些索引将被视为悬空索引。例如,如果你在 Elasticsearch 节点离线时删除了超过 cluster.indices.tombstones.size 个索引,就可能发生这种情况。
示例
editAPI返回以下响应:
{
"dangling_indices": [
{
"index_name": "my-index-000001",
"index_uuid": "zmM4e0JtBkeUjiHD-MihPQ",
"creation_date_millis": 1589414451372,
"node_ids": [
"pL47UN3dAb2d5RCWP6lQ3e"
]
}
]
}
打开索引 API
edit打开一个已关闭的索引。对于数据流,API会打开任何已关闭的备份索引。
POST /my-index-000001/_open
请求
editPOST /
描述
edit您可以使用开放索引API重新打开已关闭的索引。如果请求针对的是数据流,该请求将重新打开数据流的任何已关闭的备份索引。
一个已关闭的索引被阻止进行读/写操作,并且不允许所有已打开索引允许的操作。无法在已关闭的索引中索引文档或搜索文档。这使得已关闭的索引不必维护用于索引或搜索文档的内部数据结构,从而减少了集群的开销。
当打开或关闭一个索引时,主节点负责重新启动索引分片以反映索引的新状态。然后,分片将经历正常的恢复过程。已打开/关闭的索引数据会由集群自动复制,以确保始终安全地保留足够的分片副本。
您可以打开和关闭多个索引。如果请求明确引用了一个不存在的索引,则会抛出错误。可以使用ignore_unavailable=true参数禁用此行为。
默认情况下,您必须明确命名您正在打开或关闭的索引。
要使用_all、*或其他通配符表达式来打开或关闭索引,请将action.destructive_requires_name设置更改为false。
此设置也可以通过集群更新设置API进行更改。
关闭的索引会占用大量磁盘空间,这可能会在托管环境中引发问题。可以通过集群设置 API 将 cluster.indices.close.enable 设置为 false 来禁用关闭索引。默认值为 true。
等待活动分片
edit因为打开或关闭索引会分配其分片,所以在索引创建时的
wait_for_active_shards 设置也适用于
_open 和 _close 索引操作。
路径参数
edit-
<target> -
(可选, 字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。默认情况下,您必须明确指定要使用的索引来限制请求。 要使用
_all、*或其他通配符表达式来限制请求,请将action.destructive_requires_name设置更改为false。 您可以在elasticsearch.yml文件中更新此设置, 或使用 集群更新设置 API。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
关闭。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
示例
edit以下请求重新打开一个名为 my-index-000001 的已关闭索引。
POST /my-index-000001/_open
API返回以下响应:
{
"acknowledged" : true,
"shards_acknowledged" : true
}
刷新 API
edit刷新操作使得最近在一个或多个索引上执行的操作可以用于搜索。对于数据流,API会在流的备份索引上执行刷新操作。有关刷新操作的更多信息,请参阅近实时搜索。
POST /my-index-000001/_refresh
描述
edit使用刷新 API 显式地使自上次刷新以来在一个或多个索引上执行的所有操作可用于搜索。 如果请求针对数据流,它将刷新数据流的备份索引。
默认情况下,Elasticsearch 每秒定期刷新索引,但仅在最近 30 秒内收到一次或多次搜索请求的索引上进行。您可以使用 index.refresh_interval 设置来更改此默认间隔。
刷新请求是同步的,在刷新操作完成之前不会返回响应。
刷新是资源密集型的操作。 为了确保良好的集群性能, 我们建议尽可能等待Elasticsearch的周期性刷新, 而不是在可能的情况下执行显式刷新。
如果您的应用程序工作流程
先索引文档,然后运行搜索
以检索已索引的文档,
我们建议使用index API的
refresh=wait_for查询参数选项。
此选项确保索引操作等待
在运行搜索之前进行定期刷新。
路径参数
edit-
<target> -
(可选,字符串)
用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。
解析索引 API
edit解析指定的名称和/或索引模式,用于索引、别名和数据流。支持多个模式和远程集群。
GET /_resolve/index/my-index-*
请求
editGET /_resolve/index/
查询参数
edit-
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。默认为
false。 -
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
ignore_throttled -
(可选,布尔值) 如果为
true,冻结时会忽略具体的、扩展的或别名的索引。默认为false。[7.16.0] 在7.16.0中已弃用。
示例
editGET /_resolve/index/f*,remoteCluster1:bar*?expand_wildcards=all
API返回以下响应:
{
"indices": [
{
"name": "foo_closed",
"attributes": [
"closed"
]
},
{
"name": "freeze-index",
"aliases": [
"f-alias"
],
"attributes": [
"open"
]
},
{
"name": "remoteCluster1:bar-01",
"attributes": [
"open"
]
}
],
"aliases": [
{
"name": "f-alias",
"indices": [
"freeze-index",
"my-index-000001"
]
}
],
"data_streams": [
{
"name": "foo",
"backing_indices": [
".ds-foo-2099.03.07-000001"
],
"timestamp_field": "@timestamp"
}
]
}
解析集群API
edit解析指定的索引表达式以返回有关每个集群的信息,包括本地集群(如果包含)。
在进行跨集群搜索之前,此端点用于确定应在搜索中包含哪些远程集群。
您在此端点上使用的索引表达式与跨集群搜索时使用的相同。索引和集群排除也支持此端点。
对于索引表达式中的每个集群,返回以下信息:
- 查询(“本地”)集群当前是否连接到索引表达式范围内的每个远程集群
-
每个远程集群是否配置了
skip_unavailable为true或false - 该集群上是否有任何与索引表达式匹配的索引、别名或数据流
- 当你进行跨集群搜索时,搜索是否可能会返回错误(包括如果你的用户没有权限查询索引时的任何授权错误)
- 集群版本信息,包括Elasticsearch服务器版本
GET /_resolve/cluster/my-index-*,cluster*:my-index-*
这将返回有关本地集群和所有以别名 cluster* 开头的远程配置集群的信息。每个集群将返回有关其是否具有与 my-index-* 匹配的任何索引、别名或数据流的信息。
请求
editGET /_resolve/cluster/
查询参数
edit-
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。默认为
false。 -
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
true。 -
ignore_throttled -
(可选,布尔值) 如果为
true,冻结时会忽略具体的、扩展的或别名的索引。默认为false。[7.16.0] 在7.16.0中已弃用。
在跨集群搜索前使用此端点的优势
edit您可能希望在以下情况下从搜索中排除集群或索引:
-
远程集群当前未连接,并且配置了
skip_unavailable=false。 在这些条件下执行跨集群搜索将导致 整个搜索失败。 -
集群没有与索引表达式匹配的索引、别名或数据流(或者您的用户没有权限搜索它们)。例如,假设您的
索引表达式是
logs*,remote1:logs*,而remote1集群没有匹配logs*的索引、别名或数据 流。在这种情况下,如果您在跨集群搜索中包含该集群,该集群将不会返回任何结果。 -
索引表达式(结合您指定的任何查询参数)可能会在执行搜索时引发异常。在这些情况下,
_resolve/cluster响应中的“error”字段 将存在。(这也是显示安全/权限错误的地方。) - 远程集群是一个较旧的版本,不支持您在搜索中想要使用的功能。
示例
editGET /_resolve/cluster/my-index*,clust*:my-index*
API返回以下响应:
{
"(local)": {
"connected": true,
"skip_unavailable": false,
"matching_indices": true,
"version": {
"number": "8.13.0",
"build_flavor": "default",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
}
},
"cluster_one": {
"connected": true,
"skip_unavailable": true,
"matching_indices": true,
"version": {
"number": "8.13.0",
"build_flavor": "default",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
}
},
"cluster_two": {
"connected": true,
"skip_unavailable": false,
"matching_indices": true,
"version": {
"number": "8.13.0",
"build_flavor": "default",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
}
}
}
|
每个集群都有自己的响应部分。您发送请求的集群被标记为“(本地)”。 |
|
|
查询集群尝试向每个远程集群发出请求。如果成功, |
|
|
本地集群上配置的每个远程集群的 |
|
|
指示是否任何索引、别名或数据流与该集群指定的索引表达式匹配。 |
|
|
Elasticsearch 服务器版本。 |
识别跨集群搜索的潜在问题
edit以下请求展示了如何通过修改查询来防止搜索失败的几个示例。
GET /_resolve/cluster/not-present,clust*:my-index*,oldcluster:*?ignore_unavailable=false
{
"(local)": {
"connected": true,
"skip_unavailable": false,
"error": "no such index [not_present]"
},
"cluster_one": {
"connected": true,
"skip_unavailable": true,
"matching_indices": false,
"version": {
"number": "8.13.0",
"build_flavor": "default",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
}
},
"cluster_two": {
"connected": false,
"skip_unavailable": false,
"matching_indices": true,
"version": {
"number": "8.13.0",
"build_flavor": "default",
"minimum_wire_compatibility_version": "7.17.0",
"minimum_index_compatibility_version": "7.0.0"
}
},
"oldcluster": {
"connected": true,
"skip_unavailable": false,
"matching_indices": true
}
}
|
本地集群中没有名为 |
|
|
远程集群 |
|
|
远程集群 |
|
|
远程集群 |
滚动更新 API
editPOST my-data-stream/_rollover
描述
edit滚动更新 API 为数据流或索引别名创建一个新索引。 API 的行为取决于滚动更新目标。
滚动查看数据流
如果您滚动一个数据流,API会为该流创建一个新的写入索引。该流的先前写入索引变为常规的后备索引。滚动操作还会增加数据流的代数。请参阅滚动。
滚动一个带有写入索引的索引别名
在Elasticsearch 7.9之前,您通常会使用一个 带有写入索引的索引别名 来管理时间序列数据。数据流取代了这一功能,减少了维护工作量,并自动与数据层集成。
参见 将索引别名转换为数据流。
如果一个索引别名指向多个索引,其中一个索引必须是
写入索引。滚动API为别名创建一个新的写入索引,
并将is_write_index设置为true。该API还会将
is_write_index设置为false,用于之前的写入索引。
滚动一个索引别名到一个索引
如果您将鼠标悬停在一个指向单个索引的索引别名上,API会为该别名创建一个新索引,并从别名中移除原始索引。
为别名递增索引名称
edit当您滚动一个索引别名时,您可以为新索引指定一个名称。如果您不指定名称,并且当前索引以-和一个数字结尾,例如my-index-000001或my-index-3,新索引名称将递增该数字。例如,如果您滚动一个当前索引为my-index-000001的别名,滚动操作将创建一个名为my-index-000002的新索引。无论前一个索引的名称如何,此数字始终为6个字符,并且用零填充。
等待活动分片
edit滚动创建一个新索引,并受wait_for_active_shards设置的约束。
路径参数
edit-
<rollover-target> - (必需,字符串) 要翻转的数据流或索引别名的名称。
-
<target-index> -
(可选,字符串) 要创建的索引名称。支持 日期数学。数据流不支持此参数。
如果别名的当前写入索引名称不以
-和一个数字结尾,例如my-index-000001或my-index-3,则此参数是必需的。索引名称必须满足以下条件:
- 仅限小写
-
不能包含
\,/,*,?,",<,>,|, ` ` (空格字符),,,# -
7.0 之前的索引可以包含冒号 (
:),但已被弃用,在 7.0+ 中将不再支持 -
不能以
-,_,+开头 -
不能是
.或.. - 不能超过 255 字节(注意是字节,因此多字节字符会更快达到 255 字节的限制)
-
以
.开头的名称已被弃用,除了 隐藏索引 和由插件管理的内部索引
查询参数
edit-
dry_run -
(可选,布尔值)
如果为
true,则检查当前索引是否满足指定的条件,但不执行翻转操作。默认为false。 -
lazy -
(可选,布尔值)
如果为
true,表示当发生下一次索引操作时,数据流将被滚动更新。仅适用于数据流。默认为false。 -
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
请求体
edit-
aliases -
(可选,对象的对象) 目标索引的别名。数据流不支持此参数。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,查询DSL对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
conditions -
(可选, 对象) 滚动更新的条件。如果指定,Elasticsearch 仅在当前索引满足这些条件时执行滚动更新。如果未指定此参数,Elasticsearch 将无条件执行滚动更新。
如果指定了条件,其中至少有一个必须是max_*条件。如果满足任何max_*条件且所有min_*条件都满足,索引将会滚动。
要触发滚动更新,当前索引在请求时必须满足这些条件。Elasticsearch在API响应后不会监控索引。要自动化滚动更新,请使用ILM的
rollover。Properties of
conditions-
max_age - (可选, 时间单位) 在索引创建后达到最大经过时间时触发滚动更新。 经过的时间始终从索引创建时间计算,即使索引起始日期配置为自定义日期,例如使用 index.lifecycle.parse_origination_date 或 index.lifecycle.origination_date 设置。
-
max_docs - (可选, 整数) 在达到指定最大文档数量时触发滚动更新。 自上次刷新以来添加的文档不计入文档数量。 文档数量不包括副本分片中的文档。
-
max_size -
(可选, 字节单位) 当索引达到一定大小时触发滚动更新。 这是索引中所有主分片的总大小。 副本不计入最大索引大小。
要查看当前索引大小,请使用_cat indices API。
pri.store.size值显示所有主分片的总大小。 -
max_primary_shard_size -
(可选, 字节单位) 当索引中最大的主分片达到一定大小时触发翻转。 这是索引中主分片的最大大小。与
max_size一样,副本被忽略。要查看当前分片大小,请使用 _cat shards API。
store值显示每个分片的大小,而prirep指示分片是主分片(p)还是副本(r)。 -
max_primary_shard_docs -
(可选, 整数) 当索引中最大的主分片达到一定数量的文档时触发翻转。 这是索引中主分片的文档最大数量。与
max_docs一样,副本被忽略。要查看当前分片的文档,请使用 _cat shards API。
docs值显示每个分片的文档数量。 -
min_age -
(可选, 时间单位)
在索引创建后达到最小经过时间之前阻止滚动更新。
参见
max_age的注释。 -
min_docs -
(可选, 整数)
在达到指定最小文档数量之前阻止滚动更新。
参见
max_docs的注释。 -
min_size -
(可选, 字节单位)
在索引达到一定大小之前阻止滚动更新。
参见
max_size的注释。 -
min_primary_shard_size -
(可选, 字节单位)
在索引中最大的主分片达到一定大小之前阻止滚动更新。
参见
max_primary_shard_size的注释。 -
min_primary_shard_docs -
(可选, 整数)
在索引中最大的主分片达到一定数量的文档之前阻止滚动更新。
参见
max_primary_shard_docs的注释。
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 映射。
数据流不支持此参数。
-
settings -
数据流不支持此参数。
响应体
edit-
acknowledged -
(布尔值)
如果
true,请求在timeout时间内从主节点收到了响应。 -
shards_acknowledged -
(布尔值)
如果为
true,表示请求在master_timeout期间内收到了来自活动分片的响应。 -
old_index - (字符串) 数据流或索引别名的前一个索引。对于具有写入索引的数据流和索引别名,这是前一个写入索引。
-
new_index - (字符串) 由滚动创建的索引。对于数据流和具有写入索引的索引别名,这是当前的写入索引。
-
rolled_over -
(布尔值)
如果
true,数据流或索引别名已滚动更新。 -
dry_run -
(布尔值)
如果
true,Elasticsearch 没有执行滚动更新。 -
condition -
(对象) 请求中每个条件的结果
conditions。如果没有指定条件,这是一个空对象。属性
condition-
-
(布尔值) 键是每个条件。值是其结果。如果
true,则索引满足该条件。
-
-
lazy -
(布尔值)
如果
true,Elasticsearch 没有执行滚动更新,但成功标记了数据流在下一次索引事件时进行滚动更新。
示例
edit滚动数据流
edit以下请求无条件地滚动一个数据流。
POST my-data-stream/_rollover
以下请求将数据流延迟滚动,这意味着数据流将在下一次索引事件时滚动。这确保了映射和设置更改将应用于即将到来的数据,但它将避免为具有缓慢摄取的数据流创建额外的后备索引。
POST my-data-stream/_rollover?lazy
以下请求仅在当前写入索引满足以下一个或多个条件时才会滚动数据流:
- 索引是在7天或更久之前创建的。
- 索引包含1,000个或更多文档。
- 索引的最大主分片为50GB或更大。
POST my-data-stream/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 1000,
"max_primary_shard_size": "50gb",
"max_primary_shard_docs": "2000"
}
}
API返回:
{
"acknowledged": true,
"shards_acknowledged": true,
"old_index": ".ds-my-data-stream-2099.05.06-000001",
"new_index": ".ds-my-data-stream-2099.05.07-000002",
"rolled_over": true,
"dry_run": false,
"lazy": false,
"conditions": {
"[max_age: 7d]": false,
"[max_docs: 1000]": true,
"[max_primary_shard_size: 50gb]": false,
"[max_primary_shard_docs: 2000]": false
}
}
使用写入索引滚动索引别名
edit以下请求创建 并将其设置为 my-alias 的写入索引。
# PUT <my-index-{now/d}-000001>
PUT %3Cmy-index-%7Bnow%2Fd%7D-000001%3E
{
"aliases": {
"my-alias": {
"is_write_index": true
}
}
}
以下请求仅在当前写入索引满足以下一个或多个条件时才会滚动别名:
- 索引是在7天或更久之前创建的。
- 索引包含1,000个或更多文档。
- 索引的最大主分片为50GB或更大。
POST my-alias/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 1000,
"max_primary_shard_size": "50gb",
"max_primary_shard_docs": "2000"
}
}
API返回:
{
"acknowledged": true,
"shards_acknowledged": true,
"old_index": "my-index-2099.05.06-000001",
"new_index": "my-index-2099.05.07-000002",
"rolled_over": true,
"dry_run": false,
"lazy": false,
"conditions": {
"[max_age: 7d]": false,
"[max_docs: 1000]": true,
"[max_primary_shard_size: 50gb]": false,
"[max_primary_shard_docs: 2000]": false
}
}
如果别名的索引名称使用日期数学,并且您定期滚动索引,您可以使用日期数学来缩小搜索范围。例如,以下搜索针对过去三天内创建的索引。
# GET /<my-index-{now/d}-*>,<my-index-{now/d-1d}-*>,<my-index-{now/d-2d}-*>/_search
GET /%3Cmy-index-%7Bnow%2Fd%7D-*%3E%2C%3Cmy-index-%7Bnow%2Fd-1d%7D-*%3E%2C%3Cmy-index-%7Bnow%2Fd-2d%7D-*%3E/_search
滚动一个索引别名与一个索引
edit以下请求创建 及其别名 my-write-alias。
# PUT <my-index-{now/d}-000001>
PUT %3Cmy-index-%7Bnow%2Fd%7D-000001%3E
{
"aliases": {
"my-write-alias": { }
}
}
以下请求仅在当前索引满足以下条件之一或多个时,才会滚动别名:
- 索引是在7天或更久之前创建的。
- 索引包含1,000个或更多文档。
- 索引的最大主分片为50GB或更大。
POST my-write-alias/_rollover
{
"conditions": {
"max_age": "7d",
"max_docs": 1000,
"max_primary_shard_size": "50gb",
"max_primary_shard_docs": "2000"
}
}
API返回:
{
"acknowledged": true,
"shards_acknowledged": true,
"old_index": "my-index-2099.05.06-000001",
"new_index": "my-index-2099.05.07-000002",
"rolled_over": true,
"dry_run": false,
"lazy": false,
"conditions": {
"[max_age: 7d]": false,
"[max_docs: 1000]": true,
"[max_primary_shard_size: 50gb]": false,
"[max_primary_shard_docs: 2000]": false
}
}
收缩索引 API
edit将现有索引收缩为具有较少主分片的新索引。
POST /my-index-000001/_shrink/shrunk-my-index-000001
先决条件
edit为了使分片分配更加容易,我们建议您同时移除索引的副本分片。您可以在缩减操作过程中重新添加副本分片。
您可以使用以下更新索引设置 API 请求来移除索引的副本分片,并将索引的剩余分片重新定位到同一节点。
PUT /my_source_index/_settings
{
"settings": {
"index.number_of_replicas": 0,
"index.routing.allocation.require._name": "shrink_node_name"
}
}
|
移除索引的副本分片。 |
|
|
将索引的分片重新定位到 |
重新定位源索引可能需要一些时间。可以通过_cat recovery API跟踪进度,或者可以使用cluster health API并设置wait_for_no_relocating_shards参数来等待所有分片完成重新定位。
然后,您可以使用以下请求通过添加索引块 API将索引设置为只读:
PUT /my_source_index/_block/write
描述
edit收缩索引 API 允许您将现有索引收缩为一个新的索引,该索引具有较少的主分片。目标索引中请求的主分片数量必须是源索引中分片数量的因数。例如,一个具有 8 个主分片的索引可以收缩为 4、2 或 1 个主分片,或者一个具有 15 个主分片的索引可以收缩为 5、3 或 1 个主分片。如果索引中的分片数量是质数,它只能收缩为一个主分片。在收缩之前,索引中的每个分片(主分片或副本)的副本必须存在于同一节点上。
数据流上的当前写入索引无法缩小。为了缩小当前写入索引,必须首先将数据流滚动更新,以便创建新的写入索引,然后才能缩小之前的写入索引。
收缩的工作原理
edit一个收缩操作:
- 创建一个新的目标索引,其定义与源索引相同,但主分片数量较少。
- 将段从源索引硬链接到目标索引。(如果文件系统不支持硬链接,则所有段都会被复制到新索引中,这是一个更加耗时的过程。此外,如果使用多个数据路径,不同数据路径上的分片如果不在同一磁盘上,则需要完整复制段文件,因为硬链接不能跨磁盘工作)
-
将目标索引恢复为如同刚刚重新打开的已关闭索引。恢复分片到索引设置
.routing.allocation.initial_recovery._id。
缩小索引
edit要将 my_source_index 缩减到一个名为 my_target_index 的新索引中,请发出以下请求:
POST /my_source_index/_shrink/my_target_index
{
"settings": {
"index.routing.allocation.require._name": null,
"index.blocks.write": null
}
}
上述请求在目标索引被添加到集群状态后立即返回——它不会等待收缩操作开始。
索引只有在满足以下要求时才能被收缩:
- 目标索引必须不存在。
- 源索引的主分片数必须多于目标索引。
- 目标索引中的主分片数必须是源索引中主分片数的因子。源索引的主分片数必须多于目标索引。
-
索引中的文档总数不得超过
2,147,483,519,因为这是单个分片可以容纳的最大文档数。 - 处理收缩过程的节点必须有足够的可用磁盘空间来容纳现有索引的第二个副本。
The _shrink API 类似于 create index API
并且接受目标索引的 settings 和 aliases 参数:
POST /my_source_index/_shrink/my_target_index
{
"settings": {
"index.number_of_replicas": 1,
"index.number_of_shards": 1,
"index.codec": "best_compression"
},
"aliases": {
"my_search_indices": {}
}
}
|
目标索引中的分片数量。这必须是源索引中分片数量的一个因子。 |
|
|
最佳压缩效果只有在向索引进行新的写入时才会生效,例如在将分片强制合并为一个段时。 |
映射不能在_shrink请求中指定。
监控收缩过程
edit收缩过程可以通过_cat recovery
API进行监控,或者可以使用cluster health API来等待,直到所有主分片都被分配,方法是将wait_for_status
参数设置为yellow。
The _shrink API 在目标索引被添加到集群状态后立即返回,此时还没有任何分片被分配。在这个阶段,所有分片都处于 unassigned 状态。如果由于任何原因,目标索引无法在收缩节点上分配,其主分片将保持 unassigned 状态,直到它可以在该节点上分配。
一旦主分片被分配,它将进入状态 initializing,并且缩减过程开始。当缩减操作完成后,分片将变为 active。此时,Elasticsearch 将尝试分配任何副本,并可能决定将主分片重新定位到另一个节点。
路径参数
edit-
<index> - (必需,字符串) 要缩小的源索引的名称。
-
<target-index> -
(必需,字符串) 要创建的目标索引的名称。
索引名称必须满足以下条件:
- 仅限小写
-
不能包含
\,/,*,?,",<,>,|, ` ` (空格字符),,,# -
7.0 之前的索引可以包含冒号 (
:),但已被弃用,7.0 及以上版本将不再支持 -
不能以
-,_,+开头 -
不能是
.或.. - 不能超过 255 字节(注意是字节,因此多字节字符会更快达到 255 字节的限制)
-
以
.开头的名称已被弃用,除了 隐藏索引 和插件管理的内部索引
查询参数
edit-
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
请求体
edit-
aliases -
(可选,对象的对象) 结果索引的别名。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,Query DSL 对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
settings - (可选, 索引设置对象) 目标索引的配置选项。 参见 索引设置。
-
max_primary_shard_size -
(可选, 字节单位)
目标索引的最大主分片大小。用于为目标索引找到最佳的分片数量。
当设置此参数时,目标索引中每个分片的存储大小将不会超过此参数。
目标索引的分片数量仍然是源索引分片数量的一个因素,但如果此参数小于源索引中单个分片的大小,则目标索引的分片数量将等于源索引的分片数量。
例如,当此参数设置为50gb时,如果源索引有60个主分片,总计100gb,则目标索引将有2个主分片,每个分片大小为50gb;如果源索引有60个主分片,总计1000gb,则目标索引将有20个主分片;如果源索引有60个主分片,总计4000gb,则目标索引仍将有60个主分片。此参数与
settings中的number_of_shards冲突,只能设置其中一个。
模拟索引 API
edit返回将应用于指定索引的索引配置,该配置来自现有的索引模板。
POST /_index_template/_simulate_index/my-index-000001
请求
editPOST /_index_template/_simulate_index/
路径参数
edit-
<index> - (必需,字符串) 要模拟的索引名称。
查询参数
edit-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
include_defaults -
(可选, 布尔值) 功能处于
[技术预览]
此功能处于技术预览阶段,可能会在未来的版本中更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受正式 GA 功能支持 SLA 的约束。
。如果
true,则在响应中返回所有默认设置。 默认为false。
响应体
edit-
overlapping -
(数组) 任何也匹配索引但被更高优先级模板取代的模板。 响应包括一个空数组,如果没有重叠的模板。
Properties of
overlapping-
name - (字符串) 被取代模板的名称。
-
index_patterns - (数组) 被取代模板适用的索引模式。
-
-
template -
(对象) 将应用于索引的设置、映射和别名。
Properties of
template-
aliases -
(对象) 索引的别名。如果没有别名适用,响应将返回一个空的
aliases对象。-
-
(对象) 键是别名名称。对象体包含别名的选项。
Properties of
-
filter - (Query DSL object) 用于限制别名可以访问的文档的查询。
-
index_routing -
(字符串) 用于将索引操作路由到特定分片的值。这将覆盖索引操作的
routing值。 -
is_hidden -
(布尔值) 如果为
true,则别名是 隐藏的。 -
is_write_index -
(布尔值) 如果为
true,则索引是别名的 写入索引。 -
routing - (字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(字符串) 用于将搜索操作路由到特定分片的值。这将覆盖搜索操作的
routing值。
-
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 Mapping。
如果没有任何映射会被应用,则从响应中省略。
-
settings -
如果没有任何设置会被应用,响应将包含一个空对象。
-
示例
edit以下示例展示了将应用于 my-index-000001 的现有模板的配置。
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
|
创建一个组件模板( |
|
|
创建第二个组件模板( |
|
|
创建一个索引模板( |
|
|
显示将应用于 |
响应显示了由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-*"
]
}
]
}
模拟索引模板 API
edit返回特定索引模板将应用的索引配置。
POST /_index_template/_simulate/template_1
请求
editPOST /_index_template/_simulate/
路径参数
edit-
<index-template> - (可选,字符串) 要模拟的索引模板的名称。 要在将其添加到集群之前测试模板配置, 请省略此参数并在请求体中指定模板配置。
查询参数
edit-
create -
(可选, 布尔值) 如果
true, 则仅当没有现有模板与相同的索引模式匹配时,才使用正文中传递的模板。 如果false, 模拟将使用具有最高优先级的模板。 请注意,无论哪种情况,模板都不会永久添加或更新;它仅用于模拟。 默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
include_defaults -
(可选, 布尔值) 功能处于
[技术预览]
此功能处于技术预览阶段,可能会在未来的版本中更改或移除。Elastic 将努力修复任何问题,但技术预览中的功能不受正式 GA 功能支持 SLA 的约束。
。如果
true,则在响应中返回所有默认设置。 默认为false。
请求体
edit-
data_stream -
(可选, 对象) 如果包含此对象,模板将用于创建数据流及其支持的索引。支持空对象。
数据流需要一个匹配的索引模板,其中包含一个
data_stream对象。 请参阅创建索引模板。 -
index_patterns -
(必需,字符串数组) 用于在创建时匹配数据流和索引名称的通配符 (
*) 表达式数组。Elasticsearch 包含多个内置的索引模板。为了避免与这些模板发生命名冲突,请参阅 避免索引模式冲突。
-
_meta - (可选, 对象) 关于索引模板的可选用户元数据。可以包含任何内容。 此映射不会由Elasticsearch自动生成。
-
priority - (可选, 整数) 用于确定在新数据流或索引创建时索引模板的优先级。具有最高优先级的索引模板将被选择。如果没有指定优先级,模板将被视为优先级为0(最低优先级)。 此数字不会由Elasticsearch自动生成。
-
template -
(可选, 对象) 要应用的模板。它可以选择性地包括一个
aliases、mappings或settings配置。Properties of
template-
aliases -
(可选,对象的对象) 要添加的别名。
如果索引模板包含一个
data_stream对象,这些是数据流别名。否则,这些是索引别名。数据流别名忽略index_routing、routing和search_routing选项。Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
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 将发出弃用警告。
响应体
edit-
overlapping -
(数组) 被指定模板取代的任何模板。
Properties of
overlapping-
index_patterns - (数组) 被取代模板应用的索引模式。
-
name - (字符串) 被取代模板的名称。
-
-
template -
(对象) 将应用于匹配索引的设置、映射和别名。
Properties of
template-
aliases -
(可选,对象的对象) 索引的别名。如果索引模板包含
data_stream,则不支持此参数。Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选, Query DSL object) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选, 字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选, 布尔值) 如果为
true,则别名是 隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选, 布尔值) 如果为
true,则索引是别名的 写入索引。默认为false。 -
routing - (可选, 字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选, 字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
mappings -
(可选, 映射对象) 索引字段的映射。如果指定,此映射可以包括:
参见 Mapping。
-
settings - (可选, 索引设置对象) 索引的配置选项。参见 Index settings。
-
示例
edit模拟现有模板
edit以下示例创建并模拟了一个组合模板:
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
|
创建一个组件模板( |
|
|
创建一个组件模板( |
|
|
创建一个索引模板( |
|
|
显示由 |
响应显示了由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" : [ ]
}
模拟任意模板配置
edit要在将模板添加到集群之前查看将应用哪些设置, 您可以在请求正文中传递模板配置。 如果指定的模板的优先级高于现有模板,则将使用该模板进行模拟。
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-*"
]
}
]
}
拆分索引 API
edit将现有索引拆分为一个具有更多主分片的新索引。
POST /my-index-000001/_split/split-my-index-000001
{
"settings": {
"index.number_of_shards": 2
}
}
先决条件
edit您可以使用以下请求通过添加索引块 API将索引设置为只读:
PUT /my_source_index/_block/write
数据流上的当前写入索引无法拆分。为了拆分当前写入索引,必须首先将数据流滚动更新,以便创建新的写入索引,然后才能拆分之前的写入索引。
描述
edit拆分索引 API 允许您将现有索引拆分为一个新索引,其中每个原始主分片在新索引中被拆分为两个或更多主分片。
索引可以被分割的次数(以及每个原始分片可以被分割成的分片数量)由index.number_of_routing_shards设置决定。路由分片数量指定了内部用于通过一致性哈希在分片之间分发文档的哈希空间。例如,一个5分片的索引,如果number_of_routing_shards设置为30(5 x 2 x 3),则可以按2或3的因子进行分割。换句话说,它可以按如下方式分割:
-
5→10→30(按2分割,然后按3分割) -
5→15→30(按3分割,然后按2分割) -
5→30(按6分割)
index.number_of_routing_shards 是一个 静态索引设置。你只能在索引创建时或在一个 关闭的索引 上设置 index.number_of_routing_shards。
索引创建示例
以下创建索引 API创建了索引my-index-000001,并设置了index.number_of_routing_shards为30。
PUT /my-index-000001
{
"settings": {
"index": {
"number_of_routing_shards": 30
}
}
}
设置 index.number_of_routing_shards 的默认值取决于原始索引中的主分片数量。
默认值旨在允许您通过 2 的倍数进行拆分,最多可达 1024 个分片。然而,必须考虑原始主分片的数量。例如,一个创建时带有 5 个主分片的索引可以被拆分为 10、20、40、80、160、320 或最多 640 个分片(通过单次拆分操作或多步拆分操作)。
如果原始索引包含一个主分片(或者一个多分片索引已经被缩小到一个主分片),那么该索引可以被拆分成任意数量的分片,且数量大于1。默认的路由分片属性将适用于新拆分的索引。
拆分的工作原理
edit一个分割操作:
- 创建一个与源索引定义相同的新目标索引,但具有更多的主分片。
- 将段从源索引硬链接到目标索引。(如果文件系统不支持硬链接,则所有段都会被复制到新索引中,这是一个更加耗时的过程。)
- 在创建低级文件后,再次对所有文档进行哈希处理,以删除属于不同分片的文档。
- 将目标索引恢复,就像它是一个刚刚重新打开的已关闭索引一样。
为什么Elasticsearch不支持增量重新分片?
edit从 N 个分片到 N+1 个分片,即增量重新分片,确实是许多键值存储支持的功能。仅向新分片添加新分片并将新数据推送到新分片并不是一个选项:这可能会成为索引瓶颈,并且在给定其 _id 的情况下,确定文档属于哪个分片(这对于获取、删除和更新请求是必要的)将变得相当复杂。这意味着我们需要使用不同的哈希方案重新平衡现有数据。
键值存储实现这一点的最常见方式是使用一致性哈希。一致性哈希在将分片数量从 N 扩展到 N+1 时,只需要重新定位 1/N 的键。然而,Elasticsearch 的存储单元——分片,是 Lucene 索引。由于其面向搜索的数据结构,即使只删除 5% 的文档并将其重新索引到另一个分片上,通常也会比键值存储带来更高的成本。当通过乘法因子增加分片数量时,这种成本可以保持在合理范围内,如上节所述:这允许 Elasticsearch 在本地执行拆分,从而允许在索引级别执行拆分,而不是重新索引需要移动的文档,同时使用硬链接进行高效的文件复制。
在仅追加数据的情况下,通过创建一个新索引并将新数据推送到该索引,同时添加一个涵盖旧索引和新索引的别名以进行读操作,可以获得更大的灵活性。假设旧索引和新索引分别有M和N个分片,这与搜索一个具有M+N个分片的索引相比,没有任何开销。
拆分索引
edit要将 my_source_index 拆分为名为 my_target_index 的新索引,请发出以下请求:
POST /my_source_index/_split/my_target_index
{
"settings": {
"index.number_of_shards": 2
}
}
上述请求在目标索引被添加到集群状态后立即返回——它不会等待拆分操作开始。
索引只有在满足以下要求时才能被拆分:
- 目标索引必须不存在
- 源索引的主分片数量必须少于目标索引。
- 目标索引中的主分片数量必须是源索引中主分片数量的倍数。
- 处理拆分过程的节点必须有足够的可用磁盘空间来容纳现有索引的第二个副本。
The _split API 类似于 create index API
并且接受目标索引的 settings 和 aliases 参数:
POST /my_source_index/_split/my_target_index
{
"settings": {
"index.number_of_shards": 5
},
"aliases": {
"my_search_indices": {}
}
}
映射不能在 _split 请求中指定。
监控分割过程
edit拆分过程可以通过_cat recovery
API进行监控,或者可以使用cluster health API来等待,直到所有主分片都被分配,方法是将wait_for_status
参数设置为yellow。
The _split API 在目标索引被添加到集群状态后立即返回,此时还没有任何分片被分配。在这个阶段,所有分片都处于 unassigned 状态。如果由于任何原因,目标索引无法被分配,其主分片将保持 unassigned 状态,直到它可以在该节点上被分配。
一旦主分片被分配,它将进入状态 initializing,并且拆分过程开始。当拆分操作完成时,分片将变为 active。此时,Elasticsearch 将尝试分配任何副本,并可能决定将主分片重新定位到另一个节点。
路径参数
edit-
<index> - (必需,字符串) 要拆分的源索引的名称。
-
<target-index> -
(必需,字符串) 要创建的目标索引的名称。
索引名称必须满足以下条件:
- 仅限小写
-
不能包含
\,/,*,?,",<,>,|, ` ` (空格字符),,,# -
7.0 之前的索引可以包含冒号 (
:),但已被弃用,7.0 及以上版本将不再支持 -
不能以
-,_,+开头 -
不能是
.或.. - 不能超过 255 字节(注意是字节,因此多字节字符会更快达到 255 字节的限制)
-
以
.开头的名称已被弃用,除了 隐藏索引 和插件管理的内部索引
查询参数
edit-
wait_for_active_shards -
(可选,字符串) 在继续操作之前,必须处于活动状态的每个分片的副本数量。设置为
all或任何非负整数,最大不超过索引中每个分片的副本总数(number_of_replicas+1)。默认为1,表示仅等待每个主分片处于活动状态。请参阅Active shards。
-
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。
请求体
edit-
aliases -
(可选,对象的对象) 结果索引的别名。
Properties of
aliasesobjects-
-
(必需,对象) 键是别名名称。索引别名名称支持 日期数学。
对象体包含别名的选项。支持空对象。
Properties of
-
filter - (可选,Query DSL 对象) 用于限制别名可以访问的文档的查询。
-
index_routing -
(可选,字符串) 用于将索引操作路由到特定分片的值。如果指定,这将覆盖索引操作的
routing值。 -
is_hidden -
(可选,布尔值) 如果为
true,则别名是隐藏的。默认为false。别名的所有索引必须具有相同的is_hidden值。 -
is_write_index -
(可选,布尔值) 如果为
true,则索引是别名的写入索引。默认为false。 -
routing - (可选,字符串) 用于将索引和搜索操作路由到特定分片的值。
-
search_routing -
(可选,字符串) 用于将搜索操作路由到特定分片的值。如果指定,这将覆盖搜索操作的
routing值。
-
-
-
settings - (可选, 索引设置对象) 目标索引的配置选项。 参见 索引设置。
解冻索引 API
edit在7.14中已弃用
在8.0版本中,我们移除了冻结索引的功能。在之前的版本中,冻结索引可以减少其内存开销。然而,由于堆内存使用的最新改进,冻结索引不再有用。您可以使用此API来解冻在7.x版本中冻结的索引。冻结索引与冻结数据层无关。
解冻一个索引。
请求
editPOST /
描述
edit当一个冻结的索引被解冻时,该索引会经历正常的恢复过程,并再次变为可写状态。
路径参数
edit-
<index> - (必需,字符串)索引的标识符。
更新索引设置 API
edit实时更改动态索引设置。
对于数据流,索引设置更改默认会应用于所有后备索引。
PUT /my-index-000001/_settings
{
"index" : {
"number_of_replicas" : 2
}
}
请求
editPUT /
路径参数
edit-
<target> -
(可选,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
false。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
flat_settings -
(可选,布尔值) 如果
true,返回设置为扁平格式。默认为false。 -
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
preserve_existing -
(可选,布尔值) 如果
true,则现有的索引设置保持不变。 默认为false。 -
reopen -
(可选,布尔值) 如果为
true,则通常仅在关闭的索引上更新的任何静态设置将通过自动关闭和重新打开受影响的索引来更新。如果为false,尝试在打开的索引上更新静态设置将失败。默认为false。
使用reopen参数在自动关闭的索引上更改索引设置将导致索引在重新打开过程中暂时不可用。
示例
edit重置索引设置
edit要将设置恢复为默认值,请使用 null。例如:
PUT /my-index-000001/_settings
{
"index" : {
"refresh_interval" : null
}
}
可以在索引模块中找到可以在活动索引上动态更新的每个索引设置列表。为了保留现有的设置不被更新,可以将preserve_existing请求参数设置为true。
批量索引使用
edit例如,更新设置 API 可以用于动态改变索引,使其在批量索引时更具性能,然后将其切换到更实时的索引状态。在开始批量索引之前,使用:
PUT /my-index-000001/_settings
{
"index" : {
"refresh_interval" : "-1"
}
}
(另一个优化选项是开始时索引没有任何副本,只在之后添加它们,但这确实取决于使用情况)。
然后,一旦批量索引完成,可以更新设置(例如,恢复为默认值):
PUT /my-index-000001/_settings
{
"index" : {
"refresh_interval" : "1s"
}
}
并且,应该调用强制合并:
POST /my-index-000001/_forcemerge?max_num_segments=5
更新索引分析
edit您只能在已关闭的索引上定义新的分析器。
要添加分析器, 您必须关闭索引, 定义分析器, 然后重新打开索引。
您无法关闭数据流的写入索引。
要更新数据流的写入索引和未来支持索引的分析器,请在数据流使用的索引模板中更新分析器。然后滚动数据流以将新分析器应用于数据流的写入索引和未来支持索引。这会影响搜索和滚动后添加到数据流中的任何新数据。但是,它不会影响数据流的支持索引或其现有数据。
要更改现有后备索引的分析器,您必须创建一个新的数据流并将数据重新索引到其中。请参阅 使用重新索引更改映射或设置。
例如,
以下命令将 content 分析器添加到 my-index-000001 索引中:
POST /my-index-000001/_close
PUT /my-index-000001/_settings
{
"analysis" : {
"analyzer":{
"content":{
"type":"custom",
"tokenizer":"whitespace"
}
}
}
}
POST /my-index-000001/_open
更新映射 API
edit向现有数据流或索引添加新字段。您还可以使用此API更改现有字段的搜索设置。
对于数据流,这些更改默认会应用于所有后备索引。
PUT /my-index-000001/_mapping
{
"properties": {
"email": {
"type": "keyword"
}
}
}
请求
editPUT /
先决条件
edit-
如果启用了Elasticsearch的安全功能,您必须对目标数据流、索引或别名拥有
manage索引权限。[7.9] 在7.9中已弃用。 如果请求针对的是索引或索引别名,您还可以使用
create、create_doc、index或write索引权限来更新其映射。
路径参数
edit-
<target> -
(必需,字符串) 用于限制请求的逗号分隔的数据流、索引和别名列表。支持通配符 (
*)。要针对所有数据流和索引,请省略此参数或使用*或_all。
查询参数
edit-
allow_no_indices -
(可选, 布尔值) 如果为
false,当任何通配符表达式、 索引别名或_all值仅针对缺失或关闭的索引时,请求将返回错误。 即使请求针对其他打开的索引,此行为也适用。例如,如果一个请求针对foo*,bar*,但没有任何索引以bar开头,即使存在以foo开头的索引,请求也会返回错误。默认为
false。 -
expand_wildcards -
(可选,字符串) 通配符模式可以匹配的索引类型。如果请求可以针对数据流,此参数确定通配符表达式是否匹配隐藏的数据流。支持逗号分隔的值,例如
open,hidden。有效值为:-
all - 匹配任何数据流或索引,包括 隐藏的 数据流和索引。
-
open - 匹配开放的、非隐藏的索引。同时也匹配任何非隐藏的数据流。
-
closed - 匹配关闭的、非隐藏的索引。同时也匹配任何非隐藏的数据流。数据流不能被关闭。
-
hidden -
匹配隐藏的数据流和隐藏的索引。必须与
open、closed或两者结合使用。 -
none - 不接受通配符模式。
默认为
open。 -
-
ignore_unavailable -
(可选,布尔值) 如果为
false,则当请求目标是一个缺失或关闭的索引时,请求将返回错误。默认为false。 -
master_timeout -
(可选,时间单位)
等待主节点的时间段。如果在超时到期之前主节点不可用,请求将失败并返回错误。默认为
30s。 也可以设置为-1,表示请求不应超时。 -
timeout -
(可选,时间单位) 在更新集群元数据后,等待集群中所有相关节点响应的时间段。
如果在超时到期之前未收到响应,集群元数据更新仍然适用,但响应将表明它未被完全确认。
默认为
30s。 也可以设置为-1以指示请求不应超时。 -
write_index_only -
(可选, 布尔值)
如果为
true, 映射仅应用于目标的当前写入索引。 默认为false。
示例
edit单个目标的示例
edit更新映射 API 需要一个现有的数据流或索引。以下
创建索引 API 请求创建了没有映射的 publications 索引。
PUT /publications
以下更新映射 API 请求添加了 title,这是一个新的 text 字段,
到 publications 索引中。
PUT /publications/_mapping
{
"properties": {
"title": { "type": "text"}
}
}
多个目标
edit更新映射 API 可以应用于多个数据流或索引,只需一个请求。例如,您可以同时更新 my-index-000001 和 my-index-000002 索引的映射:
# Create the two indices
PUT /my-index-000001
PUT /my-index-000002
# Update both mappings
PUT /my-index-000001,my-index-000002/_mapping
{
"properties": {
"user": {
"properties": {
"name": {
"type": "keyword"
}
}
}
}
}
向现有对象字段添加新属性
edit您可以使用更新映射 API 向现有
对象字段添加新属性。要查看其工作原理,请尝试以下示例。
使用创建索引 API 来创建一个包含 name 对象字段和内部 first 文本字段的索引。
PUT /my-index-000001
{
"mappings": {
"properties": {
"name": {
"properties": {
"first": {
"type": "text"
}
}
}
}
}
}
使用更新映射 API 在 name 字段中添加一个新的内部 last 文本字段。
PUT /my-index-000001/_mapping
{
"properties": {
"name": {
"properties": {
"last": {
"type": "text"
}
}
}
}
}
向现有字段添加多字段
edit多字段允许你以不同的方式索引同一个字段。
你可以使用更新映射API来更新fields映射参数,并为现有字段启用多字段。
如果在添加多字段时索引(或数据流)中已包含文档,这些文档将不会包含新多字段的值。您可以使用通过查询更新API来填充新多字段。
要查看此操作的工作原理,请尝试以下示例。
使用创建索引 API 来创建一个包含 city 文本字段的索引。
PUT /my-index-000001
{
"mappings": {
"properties": {
"city": {
"type": "text"
}
}
}
}
虽然文本字段适用于全文搜索,但关键词字段未经过分析,可能更适合用于排序或聚合。
使用更新映射 API 为 city 字段启用多字段。此请求添加了 city.raw 关键字多字段,可用于排序。
PUT /my-index-000001/_mapping
{
"properties": {
"city": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
更改现有字段的支持映射参数
edit每个映射参数的文档都指明了是否可以使用更新映射API为现有字段更新它。例如,您可以使用更新映射API来更新ignore_above参数。
要查看此操作的工作原理,请尝试以下示例。
使用创建索引 API 来创建一个包含 user_id 关键词字段的索引。user_id 字段有一个 ignore_above 参数值为 20。
PUT /my-index-000001
{
"mappings": {
"properties": {
"user_id": {
"type": "keyword",
"ignore_above": 20
}
}
}
}
使用更新映射 API 将 ignore_above 参数值更改为 100。
PUT /my-index-000001/_mapping
{
"properties": {
"user_id": {
"type": "keyword",
"ignore_above": 100
}
}
}
更改现有字段的映射
edit除了支持的映射参数, 您不能更改现有字段的映射或字段类型。 更改现有字段可能会使已索引的数据无效。
如果您需要更改数据流支持索引中某个字段的映射,请参阅更改数据流的映射和设置。
如果您需要更改其他索引中字段的映射, 请创建一个具有正确映射的新索引 并将您的数据重新索引到该索引中。
要查看如何更改索引中现有字段的映射,请尝试以下示例。
使用创建索引 API
来创建一个包含user_id字段的索引,
并使用long字段类型。
PUT /my-index-000001
{
"mappings" : {
"properties": {
"user_id": {
"type": "long"
}
}
}
}
使用索引 API
来索引多个文档,并设置user_id字段值。
POST /my-index-000001/_doc?refresh=wait_for
{
"user_id" : 12345
}
POST /my-index-000001/_doc?refresh=wait_for
{
"user_id" : 12346
}
要将user_id字段
更改为keyword字段类型,
请使用创建索引API
创建一个具有正确映射的新索引。
PUT /my-new-index-000001
{
"mappings" : {
"properties": {
"user_id": {
"type": "keyword"
}
}
}
}
使用reindex API 将文档从旧索引复制到新索引。
POST /_reindex
{
"source": {
"index": "my-index-000001"
},
"dest": {
"index": "my-new-index-000001"
}
}
重命名字段
edit重命名一个字段会使已经使用旧字段名称索引的数据失效。
相反,添加一个alias字段来创建一个备用字段名称。
例如,
使用创建索引 API
来创建一个包含user_identifier字段的索引。
PUT /my-index-000001
{
"mappings": {
"properties": {
"user_identifier": {
"type": "keyword"
}
}
}
}
使用更新映射 API 为现有的 user_identifier 字段添加 user_id 字段别名。
PUT /my-index-000001/_mapping
{
"properties": {
"user_id": {
"type": "alias",
"path": "user_identifier"
}
}
}