清除缓存 API编辑

清除一个或多个索引的缓存。对于数据流,该 API 会清除流的后台索引的缓存。

response = client.indices.clear_cache(
  index: 'my-index-000001'
)
puts response
POST /my-index-000001/_cache/clear

请求编辑

POST /<target>/_cache/clear

POST /_cache/clear

先决条件编辑

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

路径参数编辑

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

查询参数编辑

allow_no_indices

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

默认为 true

expand_wildcards

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

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

默认为 open

fielddata

(可选,布尔值)如果为 true,则清除字段缓存。

使用 fields 参数仅清除特定字段的缓存。

fields

(可选,字符串)用于限制 fielddata 参数的字段名称的逗号分隔列表。

默认为所有字段。

此参数不支持对象或字段别名。

index
(可选,字符串)用于限制请求的索引名称的逗号分隔列表。
ignore_unavailable
(可选,布尔值)如果为 false,则如果请求定位到缺失或关闭的索引,则请求将返回错误。默认为 false
query
(可选,布尔值)如果为 true,则清除查询缓存。
request
(可选,布尔值)如果为 true,则清除请求缓存。

示例编辑

清除特定缓存编辑

默认情况下,清除缓存 API 会清除所有缓存。您可以通过将以下查询参数设置为 true 来仅清除特定缓存:

  • fielddata
  • query
  • request
response = client.indices.clear_cache(
  index: 'my-index-000001',
  fielddata: true
)
puts response

response = client.indices.clear_cache(
  index: 'my-index-000001',
  query: true
)
puts response

response = client.indices.clear_cache(
  index: 'my-index-000001',
  request: true
)
puts response
POST /my-index-000001/_cache/clear?fielddata=true  
POST /my-index-000001/_cache/clear?query=true      
POST /my-index-000001/_cache/clear?request=true    

仅清除字段缓存

仅清除查询缓存

仅清除请求缓存

清除特定字段的缓存编辑

要仅清除特定字段的缓存,请使用 fields 查询参数。

response = client.indices.clear_cache(
  index: 'my-index-000001',
  fields: 'foo,bar'
)
puts response
POST /my-index-000001/_cache/clear?fields=foo,bar   

清除 foobar 字段的缓存

清除多个数据流和索引的缓存编辑

response = client.indices.clear_cache(
  index: 'my-index-000001,my-index-000002'
)
puts response
POST /my-index-000001,my-index-000002/_cache/clear

清除所有数据流和索引的缓存编辑

response = client.indices.clear_cache
puts response
POST /_cache/clear