官方文档-Flush和Refresh

对应7.2官方文档路径:Indices APIs » Flush & Indices APIs » Refresh
官方地址如下:
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-flush.html
https://www.elastic.co/guide/en/elasticsearch/reference/7.2/indices-refresh.html

1.Flush

  • Flush
    flush api允许flush一个或多个索引。一个索引的flush操作可以确保在translog中存在的数据也永久存在于lucene中。这样打开lucene索引后就无需再从translog中reindex数据,减少了索引恢复时间。默认es会按需自动进行flush操作,用户很少需要自行调用此api。
POST twitter/_flush
  • Request Parameters
    flush api接受以下参数:
    wait_if_ongoing:如果设置为true(默认),当一个flush操作在执行过程中,新的flush操作将会阻塞直到可以执行。
    force: 是否强制flush,即使不需要(即如果没有更改被提交到索引)。如果没有未提交的更改,但是需要增加translog的id,这将非常有用。(此设置可视为内部设置)
  • Multi Index
    flush请求可以应用于一个或多个索引,甚至全部索引_all
POST kimchy,elasticsearch/_flush
POST _flush

2.Synced Flush

es追踪每个分片的索引活跃度,如果分片5分钟内没有接收到任何索引请求就会被标记为不活跃。这为es减少分片资源提供了一次机会,es将进行一次特别的flush也就是synced flush。synced flush会执行普通的flush,并且添加一个唯一的标记(sync_id)到所有分片。

在没有索引操作进行的分片上添加了sync id进行标记,可以用其快速检查两个shard的lucene索引是否相同。快速的sync id比较(如果存在)在恢复或重新启动期间使用,可以跳过该过程的第一个也是最昂贵的阶段。在这种情况下,无需复制任何segment文件,并且恢复的translog日志重播阶段可以立即开始。请注意,由于sync id标记是与flush一起应用的,因此translog日志很可能为空,从而进一步加快了恢复速度。

这对于从未更新或很少更新的索引(例如基于时间的数据)特别有用。这种情况下通常会生成许多索引,如果没有synced flush,它们的恢复将花费很长时间。

要检查分片是否具有sync id,请查看indices stats API返回的分片统计信息commit部分:

GET twitter/_stats?filter_path=**.commit&level=shards 

注:filter_path 参数用于减少响应的详细程度,但完全是可选的。
返回内容如下类似:具有sync_id

{
   "indices": {
      "twitter": {
         "shards": {
            "0": [
               {
                 "commit" : {
                   "id" : "3M3zkw2GHMo2Y4h4/KFKCg==",
                   "generation" : 3,
                   "user_data" : {
                     "translog_uuid" : "hnOG3xFcTDeoI_kvvvOdNA",
                     "history_uuid" : "XP7KDJGiS1a2fHYiFL5TXQ",
                     "local_checkpoint" : "-1",
                     "translog_generation" : "2",
                     "max_seq_no" : "-1",
                     "sync_id" : "AVvFY-071siAOuFGEO9P", 
                     "max_unsafe_auto_id_timestamp" : "-1",
                     "min_retained_seq_no" : "0"
                   },
                   "num_docs" : 0
                 }
               }
            ]
         }
      }
   }
}

Synced Flush API

synced flush API允许管理员手动启动同步刷新。这对于计划中的(滚动)群集重启特别有用,你需要停止索引行为并且不想等待默认的5分钟空闲索引自动同步。

虽然方便,但此API有一些警告:
1.synced flush是一种尽力操作。任何正在进行的索引操作将导致该分片的synced flush失败。这意味着某些分片可能会synced flush成功,而其他分片则会失败。
2.只要shard再次flush就会移除sync_id标记。那是因为flush替换了存储标记的低级Lucene提交点。translog日志中未提交的操作不会删除标记。在实践中,我们应该将索引上的任何索引操作视为删除标记,因为Elasticsearch随时都可能触发flush操作。

注:在正在进行索引操作的同时进行synced flush是无害的。空闲的分片将成功,非空闲的分片将失败。成功的所有分片将具有更快的恢复时间。

POST twitter/_flush/synced

请求回复中包含多少个分片成功进行了sync-flushed和任何失败信息。
这是两分片和一副本索引中的所有分片都成功sync-flushed后的样子:

{
   "_shards": {
      "total": 2,
      "successful": 2,
      "failed": 0
   },
   "twitter": {
      "total": 2,
      "successful": 2,
      "failed": 0
   }
}

这是一个分片组由于挂起操作而失败时的情况:

{
   "_shards": {
      "total": 4,
      "successful": 2,
      "failed": 2
   },
   "twitter": {
      "total": 4,
      "successful": 2,
      "failed": 2,
      "failures": [
         {
            "shard": 1,
            "reason": "[2] ongoing operations on primary"
         }
      ]
   }
}

注:当synced flush由于索引操作而失败时,将显示以上错误。在这种情况下,HTTP状态代码为409 CONFLICT。
有时,故障是针对某个shard副本的。失败的副本将不具备快速恢复的资格,但成功的副本仍将具有资格。情况如下:

{
   "_shards": {
      "total": 4,
      "successful": 1,
      "failed": 1
   },
   "twitter": {
      "total": 4,
      "successful": 3,
      "failed": 1,
      "failures": [
         {
            "shard": 1,
            "reason": "unexpected error",
            "routing": {
               "state": "STARTED",
               "primary": false,
               "node": "SZNr2J_ORxKTLUCydGX4zA",
               "relocating_node": null,
               "shard": 1,
               "index": "twitter"
            }
         }
      ]
   }
}

注:当分片副本无法同步刷新时,返回的HTTP状态代码将为409 CONFLICT。
synced flush API可以通过一次调用应用于多个索引,甚至可以应用于_all索引。

POST kimchy,elasticsearch/_flush/synced
POST _flush/synced

3.Refresh

refresh api允许refresh一个或多个索引,使自上次refresh以来执行的所有操作都可用于搜索,近实时搜索依赖于此。例如,内部需要refresh才能调用,但默认情况下会定期执行一次refresh。

POST /twitter/_refresh

Multi Index

refresh API可以通过一次调用应用于多个索引,甚至可以应用于_all索引。

POST /kimchy,elasticsearch/_refresh
POST /_refresh
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容