刷新 API编辑

刷新一个或多个数据流或索引。

response = client.indices.flush(
  index: 'my-index-000001'
)
puts response
POST /my-index-000001/_flush

请求编辑

POST /<target>/_flush

GET /<target>/_flush

POST /_flush

GET /_flush

先决条件编辑

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

描述编辑

刷新数据流或索引是确保当前仅存储在 事务日志 中的任何数据也永久存储在 Lucene 索引中的过程。重新启动时,Elasticsearch 会将事务日志中任何未刷新的操作重放到 Lucene 索引中,以将其恢复到重新启动前的状态。Elasticsearch 会根据需要自动触发刷新,使用启发式方法在未刷新事务日志的大小与执行每次刷新的成本之间进行权衡。

每个操作一旦刷新,就会永久存储在 Lucene 索引中。这可能意味着不需要在事务日志中维护它的额外副本。事务日志由多个文件(称为“代”)组成,Elasticsearch 会在不再需要任何代文件时将其删除,从而释放磁盘空间。

也可以使用 flush API 触发一个或多个索引上的刷新,尽管用户很少需要直接调用此 API。如果您在索引一些文档后调用 flush API,则成功的响应表示 Elasticsearch 已刷新在调用 flush API 之前索引的所有文档。

路径参数编辑

<target>
(可选,字符串)要刷新的数据流、索引和别名的逗号分隔列表。支持通配符 (*)。要刷新所有数据流和索引,请省略此参数或使用 *_all

查询参数编辑

allow_no_indices

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

默认为 true

expand_wildcards

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

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

默认为 open

force

(可选,布尔值)如果为 true,则即使没有要提交到索引的更改,请求也会强制刷新。默认为 false

您可以使用此参数增加事务日志的代号。

此参数被视为内部参数。

ignore_unavailable
(可选,布尔值)如果为 false,则如果请求针对缺少或已关闭的索引,则请求将返回错误。默认为 false
wait_if_ongoing

(可选,布尔值)如果为 true,则刷新操作将在另一个刷新操作运行时阻塞,直到执行完毕。

如果为 false,则如果您在另一个刷新操作运行时请求刷新,Elasticsearch 将返回错误。

默认为 true

示例编辑

刷新特定的数据流或索引编辑

response = client.indices.flush(
  index: 'my-index-000001'
)
puts response
POST /my-index-000001/_flush

刷新多个数据流和索引编辑

response = client.indices.flush(
  index: 'my-index-000001,my-index-000002'
)
puts response
POST /my-index-000001,my-index-000002/_flush

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

resp = client.indices.flush()
print(resp)
response = client.indices.flush
puts response
POST /_flush