刷新 API

编辑

刷新操作使对一个或多个索引执行的最近操作可用于搜索。对于数据流,API 会在数据流的后备索引上运行刷新操作。有关刷新操作的更多信息,请参阅 近实时搜索

resp = client.indices.refresh(
    index="my-index-000001",
)
print(resp)
response = client.indices.refresh(
  index: 'my-index-000001'
)
puts response
const response = await client.indices.refresh({
  index: "my-index-000001",
});
console.log(response);
POST /my-index-000001/_refresh

请求

编辑

POST <目标>/_refresh

GET <目标>/_refresh

POST /_refresh

GET /_refresh

先决条件

编辑
  • 如果启用了 Elasticsearch 安全功能,您必须具有目标数据流、索引或别名的 maintenancemanage 索引权限

描述

编辑

使用刷新 API 显式地使自上次刷新以来对一个或多个索引执行的所有操作可用于搜索。如果请求以数据流为目标,则它会刷新数据流的后备索引。

默认情况下,Elasticsearch 每秒定期刷新索引,但仅对在过去 30 秒内收到一个或多个搜索请求的索引进行刷新。您可以使用 index.refresh_interval 设置更改此默认间隔。

刷新请求是同步的,并且在刷新操作完成之前不会返回响应。

刷新操作会消耗大量资源。为确保良好的集群性能,我们建议尽可能等待 Elasticsearch 的定期刷新,而不是执行显式刷新。

如果您的应用程序工作流程索引文档然后运行搜索以检索索引的文档,我们建议使用 索引 APIrefresh=wait_for 查询参数选项。此选项可确保索引操作在运行搜索之前等待定期刷新。

路径参数

编辑
<目标>
(可选,字符串)用逗号分隔的数据流、索引和别名列表,用于限制请求。支持通配符 (*)。要以所有数据流和索引为目标,请省略此参数或使用 *_all

查询参数

编辑
allow_no_indices

(可选,布尔值)如果为 false,则当任何通配符表达式、索引别名_all 值仅以缺失或关闭的索引为目标时,请求会返回错误。即使请求以其他打开的索引为目标,此行为也适用。例如,如果某个索引以 foo 开头但没有索引以 bar 开头,则以 foo*,bar* 为目标的请求将返回错误。

默认为 true

expand_wildcards

(可选,字符串)通配符模式可以匹配的索引类型。如果请求可以以数据流为目标,则此参数确定通配符表达式是否匹配隐藏的数据流。支持用逗号分隔的值,例如 open,hidden。有效值包括

all
匹配任何数据流或索引,包括隐藏的。
open
匹配打开的、非隐藏的索引。也匹配任何非隐藏的数据流。
closed
匹配关闭的、非隐藏的索引。也匹配任何非隐藏的数据流。数据流无法关闭。
hidden
匹配隐藏的数据流和隐藏的索引。必须与 openclosed 或两者结合使用。
none
不接受通配符模式。

默认为 open

ignore_unavailable
(可选,布尔值)如果为 false,则当请求以缺失或关闭的索引为目标时,会返回错误。默认为 false

示例

编辑

刷新多个数据流和索引

编辑
resp = client.indices.refresh(
    index="my-index-000001,my-index-000002",
)
print(resp)
response = client.indices.refresh(
  index: 'my-index-000001,my-index-000002'
)
puts response
const response = await client.indices.refresh({
  index: "my-index-000001,my-index-000002",
});
console.log(response);
POST /my-index-000001,my-index-000002/_refresh

刷新集群中的所有数据流和索引

编辑
resp = client.indices.refresh()
print(resp)
response = client.indices.refresh
puts response
const response = await client.indices.refresh();
console.log(response);
POST /_refresh