File tree Expand file tree Collapse file tree 3 files changed +69
-2
lines changed
docs/rest_apis/document_apis Expand file tree Collapse file tree 3 files changed +69
-2
lines changed Original file line number Diff line number Diff line change @@ -917,7 +917,7 @@ npm run docs:dev
917917 - :heavy_check_mark : 重索引 API [ :link : ] ( https://elasticsearch.bookhub.tech/rest_apis/document_apis/reindex )
918918 - :heavy_check_mark : 词向量 API [ :link : ] ( https://elasticsearch.bookhub.tech/rest_apis/document_apis/termvectors )
919919 - :heavy_check_mark : 多词向量 API [ :link : ] ( https://elasticsearch.bookhub.tech/rest_apis/document_apis/multi_termvectors )
920- - ?refresh
920+ - : heavy_check_mark : ?refresh [ : link : ] ( https://elasticsearch.bookhub.tech/rest_apis/document_apis/refresh )
921921 - Optimistic concurrency control
922922 - Enrich APIs
923923 - Put enrich policy
Original file line number Diff line number Diff line change 1+ # ?refresh
2+
3+ [ 索引] ( rest_apis/document_apis/docs_index ) 、[ 更新] ( rest_apis/document_apis/update ) 、[ 删除] ( rest_apis/document_apis/delete ) 和[ 批量] ( rest_apis/document_apis/bulk ) API 支持设置 ` refresh ` ,以控制搜索何时可以看到该请求所做的更改。这些是允许的值:
4+
5+ - ** 空字符串** 或 ` true `
6+
7+ 在操作发生后立即刷新相关的主分片和副本分片(而不是整个索引),以便更新后的文档立即出现在搜索结果中。** 只有** 在经过深思熟虑并确认不会导致索引和搜索性能低下的情况下,才可以这样做。
8+
9+ - ` wait_for `
10+
11+ 在响应之前,等待请求所做的更改通过刷新变得可见。这不会强制立即刷新,而是等待刷新发生。Elasticsearch 会每隔 ` index.refresh_interval ` (默认值为一秒)自动刷新一次已更改的分片。该设置是[ 动态的] ( index_modules/index_module#动态索引设置 ) 。调用[ 刷新] ( rest_apis/index_apis/refresh ) API 或在任何支持刷新的 API 上将 ` refresh ` 设置为 ` true ` 也会导致刷新,进而导致已经在运行的 ` refresh=wait_for ` 请求返回。
12+
13+ - ` false ` (默认值)
14+
15+ 不采取任何与刷新相关的操作。该请求所做的更改将在请求返回后的某个时间点可见。
16+
17+ ## 选用哪个设置
18+
19+ 除非你有充分的理由等待更改变得可见,否则请始终使用 ` refresh=false ` (默认设置)。最简单快捷的选择是从 URL 中省略 ` refresh ` 参数。
20+
21+ 如果绝对必须让请求所做的更改与请求同步可见,则必须在增加 Elasticsearch 负载(` true ` )和延长响应等待时间(` wait_for ` )之间做出选择。以下几点可以帮助你做出决定:
22+
23+ - 索引更改的次数越多,` wait_for ` 与 ` true ` 相比节省的工作量就越多。如果索引每隔一次 ` index.refresh_interval ` 才更改一次,那么 ` wait_for ` 不会节省任何工作。
24+
25+ - ` true ` 会创建效率较低的索引结构(小段),这些小段随后必须合并到效率更高的索引结构(大段)中。也就是说,` true ` 的代价是在创建索引时创建小段,在搜索时搜索小段,以及在合并时创建大段。
26+
27+ - 切勿连续启动多个 ` refresh=wait_for ` 请求。相反,使用 ` refresh=wait_for ` 将它们批量合并为一个批量请求,Elasticsearch 会并行启动所有请求,并在所有请求都完成后才返回。
28+
29+ - 如果将刷新间隔设为 ` -1 ` ,禁用自动刷新,那么使用 ` refresh=wait_for ` 的请求将无限期等待,直到某个操作导致刷新。相反,将 ` index.refresh_interval ` 设置为比默认值更短的值,如 ` 200ms ` ,会使 ` refresh=wait_for ` 的刷新速度更快,但仍会产生低效的分段。
30+
31+ - ` refresh=wait_for ` 只影响它所在的请求,但通过强制立即刷新,` refresh=true ` 会影响其他正在进行的请求。通常,如果你有一个正在运行的系统,你不想打扰它,那么 ` refresh=wait_for ` 是一个较小的修改。
32+
33+ ## ` refresh=wait_for ` 能强制刷新
34+
35+ 如果在分片上已经有 ` index.max_refresh_listeners ` (默认值为 ` 1000 ` )请求在等待刷新时,收到了 ` refresh=wait_for ` 请求,那么该请求的行为将与刷新设置为 ` true ` 时的行为一样:它将强制刷新。这样做既能保证 ` refresh=wait_for ` 请求返回时,其变更对搜索是可见的,又能防止被阻塞的请求不经检查而占用资源。如果一个请求因为用完了监听器槽而强制刷新,那么它的响应将包含 ` "forced_refresh":true ` 。
36+
37+ 无论批量请求修改了多少次分区,它们在每个分区上都只占用一个槽位。
38+
39+ ## 示例
40+
41+ 这将创建一个文档,并立即刷新索引,使其可见:
42+
43+ ``` bash
44+ PUT /test/_doc/1? refresh
45+ {" test" : " test" }
46+ PUT /test/_doc/2? refresh=true
47+ {" test" : " test" }
48+ ```
49+
50+ 这将创建一个文档,但不会使其在搜索时可见:
51+
52+ ``` bash
53+ PUT /test/_doc/3
54+ {" test" : " test" }
55+ PUT /test/_doc/4? refresh=false
56+ {" test" : " test" }
57+ ```
58+
59+ 这将创建一个文档,并等待它在搜索时可见:
60+
61+ ``` bash
62+ PUT /test/_doc/4? refresh=wait_for
63+ {" test" : " test" }
64+ ```
65+
66+ > [ 原文链接] ( https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-refresh.html )
Original file line number Diff line number Diff line change @@ -167,7 +167,8 @@ const sidebars = {
167167 'rest_apis/document_apis/bulk' ,
168168 'rest_apis/document_apis/reindex' ,
169169 'rest_apis/document_apis/termvectors' ,
170- 'rest_apis/document_apis/multi_termvectors'
170+ 'rest_apis/document_apis/multi_termvectors' ,
171+ 'rest_apis/document_apis/refresh'
171172 ]
172173 } ,
173174 {
You can’t perform that action at this time.
0 commit comments