真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

ReindexAPI怎么從本地重建索引

本篇內(nèi)容主要講解“Reindex API怎么從本地重建索引”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Reindex API怎么從本地重建索引”吧!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站建設(shè)、做網(wǎng)站、移動(dòng)網(wǎng)站開(kāi)發(fā)等業(yè)務(wù)。幫助企業(yè)客戶(hù)真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開(kāi)放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶(hù)帶來(lái)驚喜。創(chuàng)新互聯(lián)建站推出黃岡免費(fèi)做網(wǎng)站回饋大家。

從本地重建索引

Reindex不會(huì)嘗試設(shè)置目標(biāo)索引。它不會(huì)復(fù)制源索引的設(shè)置信息。您應(yīng)該在運(yùn)行_reindex操作之前設(shè)置目標(biāo)索引,包括設(shè)置映射,分片數(shù),副本等。

_reindex的最基本形式只是將文檔從一個(gè)索引復(fù)制到另一個(gè)索引。下面將文檔從twitter索引復(fù)制到new_twitter索引中:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}

這將會(huì)返回類(lèi)似以下的信息:
{
  "took" : 147,
  "timed_out": false,
  "created": 120,
  "updated": 0,
  "deleted": 0,
  "batches": 1,
  "version_conflicts": 0,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1.0,
  "throttled_until_millis": 0,
  "total": 120,
  "failures" : [ ]
}

和_update_by_query一樣,_reindex獲取源索引的快照,但其目標(biāo)索引必須是不同的索引,因此不會(huì)發(fā)生版本沖突。 dest元素可以像索引API一樣進(jìn)行配置,以控制樂(lè)觀并發(fā)控制。只需將version_type 空著(像上面一樣)或?qū)ersion_type設(shè)置為internal則Elasticsearch強(qiáng)制性的將文檔轉(zhuǎn)儲(chǔ)到目標(biāo)中,覆蓋具有相同類(lèi)型和ID的任何內(nèi)容:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "internal"
  }
}
將version_type設(shè)置為external將導(dǎo)致Elasticsearch從源文件中保留版本,創(chuàng)建缺失的所有文檔,并更新在目標(biāo)索引中比源索引中版本更老的所有文檔:

 
POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "external"
  }
}
設(shè)置op_type為create將導(dǎo)致_reindex僅在目標(biāo)索引中創(chuàng)建缺少的文檔。所有存在的文檔將導(dǎo)致版本沖突:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "op_type": "create"
  }
} 
結(jié)果:
{
  "took": 2015,
  "timed_out": false,
  "total": 6520,
  "updated": 0,
  "created": 885,
  "deleted": 0,
  "batches": 1,
  "version_conflicts": 115,
  "noops": 0,
  "retries": {
    "bulk": 0,
    "search": 0
  },
  "throttled_millis": 0,
  "requests_per_second": -1,
  "throttled_until_millis": 0,
  "failures": [
    {
      "index": "sphinx-doctorinfo-20.11.11-162930",
      "type": "_doc",
      "id": "42",
      "cause": {
        "type": "version_conflict_engine_exception",
        "reason": "[_doc][42]: version conflict, document already exists (current version [1])",
        "index_uuid": "z1U5C2-TSXWQtAofQSSuHg",
        "shard": "0",
        "index": "sphinx-doctorinfo-20.11.11-162930"
      },
      "status": 409
    }
}
默認(rèn)情況下,版本沖突將中止_reindex進(jìn)程,但您可以通過(guò)請(qǐng)求體設(shè)置"conflict":"proceed"來(lái)在沖突時(shí)進(jìn)行計(jì)數(shù):

POST _reindex
{
  "conflicts": "proceed",
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "op_type": "create"
  }
}
您可以通過(guò)向source添加type或添加query來(lái)限制文檔。下面會(huì)將kimchy發(fā)布的tweet復(fù)制到new_twitter中:

POST _reindex
{
  "source": {
    "index": "twitter",
    "type": "tweet",
    "query": {
      "term": {
        "user": "kimchy"
      }
    }
  },
  "dest": {
    "index": "new_twitter"
  }
}

source中的indextype都可以是一個(gè)列表,允許您在一個(gè)請(qǐng)求中從大量的來(lái)源進(jìn)行復(fù)制。下面將從twitterblog索引中的tweetpost類(lèi)型中復(fù)制文檔。它也包含twitter索引中post類(lèi)型以及blog索引中的tweet類(lèi)型。如果你想更具體,你將需要使用query。它也沒(méi)有努力處理ID沖突。目標(biāo)索引將保持有效,但由于迭代順序定義不正確,預(yù)測(cè)哪個(gè)文檔可以保存下來(lái)是不容易的。

POST _reindex
{
  "source": {
    "index": ["twitter", "blog"],
    "type": ["tweet", "post"]
  },
  "dest": {
    "index": "all_together"
  }
}

還可以通過(guò)設(shè)置大小限制處理的文檔的數(shù)量。下面只會(huì)將單個(gè)文檔從twitter復(fù)制到new_twitter

POST _reindex
{
  "size": 1,
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
}

如果你想要從twitter索引獲得一個(gè)特定的文檔集合你需要排序。排序使?jié)L動(dòng)效率更低,但在某些情況下它是值得的。如果可能,更喜歡更多的選擇性查詢(xún)sizesort。這將從twitter復(fù)10000個(gè)文檔到new_twitter

POST _reindex
{
  "size": 10000,
  "source": {
    "index": "twitter",
    "sort": { "date": "desc" }
  },
  "dest": {
    "index": "new_twitter"
  }
} 

source部分支持搜索請(qǐng)求中支持的所有元素。例如,只使用原始文檔的一部分字段,使用源過(guò)濾如下所示:

POST _reindex
{
  "source": {
    "index": "twitter",
    "_source": ["user", "tweet"]
  },
  "dest": {
    "index": "new_twitter"
  }
}

update_by_query一樣,_reindex支持修改文檔的腳本。與_update_by_query不同,腳本允許修改文檔的元數(shù)據(jù)。此示例修改了源文檔的版本:

POST _reindex
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter",
    "version_type": "external"
  },
  "script": {
    "inline": "if (ctx._source.foo == 'bar') {ctx._version++; ctx._source.remove('foo')}",
    "lang": "painless"
  }
} 

就像在_update_by_query中一樣,您可以設(shè)置ctx.op來(lái)更改在目標(biāo)索引上執(zhí)行的操作:

noop
如果您的腳本決定不必進(jìn)行任何更改,請(qǐng)?jiān)O(shè)置 ctx.op ="noop" 。這將導(dǎo)致_update_by_query 從其更新中忽略該文檔。這個(gè)沒(méi)有操作將被報(bào)告在響應(yīng)體的 noop 計(jì)數(shù)器上。

delete
如果您的腳本決定必須刪除該文檔,請(qǐng)?jiān)O(shè)置ctx.op="delete"。刪除將在響應(yīng)體的 deleted 計(jì)數(shù)器中報(bào)告。

將ctx.op設(shè)置為其他任何內(nèi)容都是錯(cuò)誤。在ctx中設(shè)置任何其他字段是一個(gè)錯(cuò)誤。

想想可能性!只要小心點(diǎn),有很大的力量...你可以改變:

_id
_type
_index
_version
_routing
_parent

將_version設(shè)置為null或從ctx映射清除就像在索引請(qǐng)求中不發(fā)送版本一樣。這將導(dǎo)致目標(biāo)索引中的文檔被覆蓋,無(wú)論目標(biāo)版本或_reindex請(qǐng)求中使用的版本類(lèi)型如何。

默認(rèn)情況下,如果_reindex看到具有路由的文檔,則路由將被保留,除非腳本被更改。您可以根據(jù)dest請(qǐng)求設(shè)置routing來(lái)更改:

  • keep:將批量請(qǐng)求的每個(gè)匹配項(xiàng)的路由設(shè)置為匹配上的路由。默認(rèn)值。

  • discard:將批量請(qǐng)求的每個(gè)匹配項(xiàng)的路由設(shè)置為null。

  • =<某些文本>:將批量請(qǐng)求的每個(gè)匹配項(xiàng)的路由設(shè)置為`=`之后的文本。

例如,您可以使用以下請(qǐng)求將source索引的所有公司名稱(chēng)為cat的文檔復(fù)制到路由設(shè)置為catdest索引。

POST _reindex
{
  "source": {
    "index": "source",
    "query": {
      "match": {
        "company": "cat"
      }
    }
  },
  "dest": {
    "index": "dest",
    "routing": "=cat"
  }
}

默認(rèn)情況下,_reindex批量滾動(dòng)處理大小為1000.您可以在source元素中指定size字段來(lái)更改批量處理大?。?/p>

POST _reindex
{
  "source": {
    "index": "source",
    "size": 100  #batch size 這里在機(jī)器資源允許的條件下,搞大點(diǎn)
  },
  "dest": {
    "index": "dest",
    "routing": "=cat"
  }
} 


1.ES是非實(shí)時(shí)的。Elasticsearch中,Index的實(shí)時(shí)性是由refresh控制的,默認(rèn)是1s,最快可到100ms,那么也就意味著Index doc成功后,需要等待一秒鐘后才可以被搜索到。
2.reindex是耗費(fèi)性能的。借助:scroll+bulk實(shí)現(xiàn)。
優(yōu)化建議:重索引下建議這個(gè)size設(shè)置大點(diǎn)

Reindex也可以使用[Ingest Node]功能來(lái)指定pipeline, 就像這樣:

POST _reindex
{
  "source": {
    "index": "source"
  },
  "dest": {
    "index": "dest",
    "pipeline": "some_ingest_pipeline"
  }
}

從遠(yuǎn)程重建索引

Reindex支持從遠(yuǎn)程Elasticsearch群集重建索引:

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "username": "user",
      "password": "pass"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

host參數(shù)必須包含scheme,hostport(例如 https:// otherhost:9200)。用戶(hù)名和密碼參數(shù)是可選的,當(dāng)它們存在時(shí),索引將使用基本認(rèn)證連接到遠(yuǎn)程Elasticsearch節(jié)點(diǎn)。使用基本認(rèn)證時(shí)請(qǐng)務(wù)必使用https,密碼將以純文本格式發(fā)送。

必須在elasticsearch.yaml中使用reindex.remote.whitelist屬性將遠(yuǎn)程主機(jī)明確列入白名單。它可以設(shè)置為允許的遠(yuǎn)程hostport組合的逗號(hào)分隔列表(例如otherhost:9200,another:9200,127.0.10.*:9200,localhost:*)。白名單忽略了scheme ——僅使用主機(jī)和端口。

此功能應(yīng)適用于您可能找到的任何版本的Elasticsearch的遠(yuǎn)程群集。這應(yīng)該允許您從任何版本的Elasticsearch升級(jí)到當(dāng)前版本,通過(guò)從舊版本的集群重新建立索引。

要啟用發(fā)送到舊版本Elasticsearch的查詢(xún),query參數(shù)將直接發(fā)送到遠(yuǎn)程主機(jī),無(wú)需驗(yàn)證或修改。

來(lái)自遠(yuǎn)程服務(wù)器的重新索引使用默認(rèn)為最大大小為100mb的堆棧緩沖區(qū)。如果遠(yuǎn)程索引包含非常大的文檔,則需要使用較小的批量大小。下面的示例設(shè)置非常非常小的批量大小10

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200"
    },
    "index": "source",
    "size": 10,
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

也可以使用socket_timeout字段在遠(yuǎn)程連接上設(shè)置socket的讀取超時(shí),并使用connect_timeout字段設(shè)置連接超時(shí)。兩者默認(rèn)為三十秒。此示例將套接字讀取超時(shí)設(shè)置為一分鐘,并將連接超時(shí)設(shè)置為十秒:

POST _reindex
{
  "source": {
    "remote": {
      "host": "http://otherhost:9200",
      "socket_timeout": "1m",
      "connect_timeout": "10s"
    },
    "index": "source",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "dest"
  }
}

Reindex API

1. URL參數(shù)

除了標(biāo)準(zhǔn)參數(shù)像pretty之外,“Reindex API”還支持refresh、wait_for_completionwait_for_active_shards、timeout以及requests_per_second。

發(fā)送refresh將在更新請(qǐng)求完成時(shí)更新索引中的所有分片。這不同于 Index API 的refresh參數(shù),只會(huì)導(dǎo)致接收到新數(shù)據(jù)的分片被索引。

如果請(qǐng)求包含wait_for_completion=false,那么Elasticsearch將執(zhí)行一些預(yù)檢檢查、啟動(dòng)請(qǐng)求、然后返回一個(gè)任務(wù),可以與Tasks API一起使用來(lái)取消或獲取任務(wù)的狀態(tài)。Elasticsearch還將以.tasks/task/${taskId}作為文檔創(chuàng)建此任務(wù)的記錄。這是你可以根據(jù)是否合適來(lái)保留或刪除它。當(dāng)你完成它時(shí),刪除它可以讓Elasticsearch回收它使用的空間。

wait_for_active_shards控制在繼續(xù)請(qǐng)求之前必須有多少個(gè)分片必須處于活動(dòng)狀態(tài),詳見(jiàn)這里。timeout控制每個(gè)寫(xiě)入請(qǐng)求等待不可用分片變成可用的時(shí)間。兩者都能正確地在Bulk API中工作。

requests_per_second可以設(shè)置為任何正數(shù)(1.4,6,1000等),來(lái)作為“delete-by-query”每秒請(qǐng)求數(shù)的節(jié)流閥數(shù)字,或者將其設(shè)置為-1以禁用限制。節(jié)流是在批量批次之間等待,以便它可以操縱滾動(dòng)超時(shí)。等待時(shí)間是批次完成的時(shí)間與request_per_second * requests_in_the_batch的時(shí)間之間的差異。由于分批處理沒(méi)有被分解成多個(gè)批量請(qǐng)求,所以會(huì)導(dǎo)致Elasticsearch創(chuàng)建許多請(qǐng)求,然后等待一段時(shí)間再開(kāi)始下一組。這是“突發(fā)”而不是“平滑”。默認(rèn)值為-1。

2. 響應(yīng)體

JSON響應(yīng)類(lèi)似如下:

{
  "took" : 639,
  "updated": 0,
  "created": 123,
  "batches": 1,
  "version_conflicts": 2,
  "retries": {
    "bulk": 0,
    "search": 0
  }
  "throttled_millis": 0,
  "failures" : [ ]
}
  • took:從整個(gè)操作的開(kāi)始到結(jié)束的毫秒數(shù)。

  • updated:成功更新的文檔數(shù)。

  • upcreateddated:成功創(chuàng)建的文檔數(shù)。

  • batches:通過(guò)查詢(xún)更新的滾動(dòng)響應(yīng)數(shù)量。

  • version_conflicts:根據(jù)查詢(xún)更新時(shí),版本沖突的數(shù)量。

  • retries:根據(jù)查詢(xún)更新的重試次數(shù)。bluk 是重試的批量操作的數(shù)量,search 是重試的搜索操作的數(shù)量。

  • throttled_millis:請(qǐng)求休眠的毫秒數(shù),與`requests_per_second`一致。

  • failures:失敗的索引數(shù)組。如果這是非空的,那么請(qǐng)求因?yàn)檫@些失敗而中止。請(qǐng)參閱 conflicts 來(lái)如何防止版本沖突中止操作。

3. 配合Task API使用

您可以使用Task API獲取任何正在運(yùn)行的重建索引請(qǐng)求的狀態(tài):

GET _tasks?detailed=true&actions=*/update/byquery 

響應(yīng)會(huì)類(lèi)似如下:
{
  "nodes" : {
    "r1A2WoRbTwKZ516z6NEs5A" : {
      "name" : "r1A2WoR",
      "transport_address" : "127.0.0.1:9300",
      "host" : "127.0.0.1",
      "ip" : "127.0.0.1:9300",
      "attributes" : {
        "testattr" : "test",
        "portsfile" : "true"
      },
      "tasks" : {
        "r1A2WoRbTwKZ516z6NEs5A:36619" : {
          "node" : "r1A2WoRbTwKZ516z6NEs5A",
          "id" : 36619,
          "type" : "transport",
          "action" : "indices:data/write/reindex",
          "status" : {    //①
            "total" : 6154,
            "updated" : 3500,
            "created" : 0,
            "deleted" : 0,
            "batches" : 4,
            "version_conflicts" : 0,
            "noops" : 0,
            "retries": {
              "bulk": 0,
              "search": 0
            },
            "throttled_millis": 0
          },
          "description" : ""
        }
      }
    }
  }
}

① 此對(duì)象包含實(shí)際狀態(tài)。它就像是響應(yīng)json,重要的添加total字段。 total是重建索引希望執(zhí)行的操作總數(shù)。您可以通過(guò)添加的updatedcreateddeleted的字段來(lái)估計(jì)進(jìn)度。當(dāng)它們的總和等于total字段時(shí),請(qǐng)求將完成。

使用任務(wù)id可以直接查找任務(wù):

GET /_tasks/taskId:1

這個(gè)API的優(yōu)點(diǎn)是它與wait_for_completion=false集成,以透明地返回已完成任務(wù)的狀態(tài)。如果任務(wù)完成并且wait_for_completion=false被設(shè)置,那么它將返回resultserror字段。此功能的成本是wait_for_completion=false.tasks/task/${taskId}創(chuàng)建的文檔,由你自己刪除該文件。

4. 配合取消任務(wù)API使用

所有重建索引都能使用Task Cancel API取消:

POST _tasks/task_id:1/_cancel 

可以使用上面的任務(wù)API找到task_id。

取消應(yīng)盡快發(fā)生,但可能需要幾秒鐘。上面的任務(wù)狀態(tài)API將繼續(xù)列出任務(wù),直到它被喚醒取消自身。

5. 重置節(jié)流閥

request_per_second的值可以在通過(guò)查詢(xún)刪除時(shí)使用_rethrottle API更改:

POST _update_by_query/task_id:1/_rethrottle?requests_per_second=-1 

可以使用上面的任務(wù)API找到task_id。

就像在_update_by_query API中設(shè)置它一樣,request_per_second可以是-1來(lái)禁用限制,或者任何十進(jìn)制數(shù)字,如1.7或12,以節(jié)制到該級(jí)別。加速查詢(xún)的會(huì)立即生效,但是在完成當(dāng)前批處理之后,減慢查詢(xún)的才會(huì)生效。這樣可以防止?jié)L動(dòng)超時(shí)。

6. 修改字段名

_reindex可用于使用重命名的字段構(gòu)建索引的副本。假設(shè)您創(chuàng)建一個(gè)包含如下所示的文檔的索引:

POST test/test/1?refresh
{
  "text": "words words",
  "flag": "foo"
} 

但是你不喜歡這個(gè)flag名稱(chēng),而是要用tag替換它。 _reindex可以為您創(chuàng)建其他索引:

POST _reindex
{
  "source": {
    "index": "test"
  },
  "dest": {
    "index": "test2"
  },
  "script": {
    "inline": "ctx._source.tag = ctx._source.remove(\"flag\")"
  }
} 

現(xiàn)在你可以得到新的文件:

GET test2/test/1 

{
  "found": true,
  "_id": "1",
  "_index": "test2",
  "_type": "test",
  "_version": 1,
  "_source": {
    "text": "words words",
    "tag": "foo"
  }
} 

或者你可以通過(guò)tag進(jìn)行任何你想要的搜索。

7. 手動(dòng)切片

重建索引支持滾動(dòng)切片,您可以相對(duì)輕松地手動(dòng)并行化處理:

POST _reindex
{
  "source": {
    "index": "twitter",
    "slice": {
      "id": 0,
      "max": 2
    }
  },
  "dest": {
    "index": "new_twitter"
  }
}
POST _reindex
{
  "source": {
    "index": "twitter",
    "slice": {
      "id": 1,
      "max": 2
    }
  },
  "dest": {
    "index": "new_twitter"
  }
} 

您可以通過(guò)以下方式驗(yàn)證:

GET _refresh
POST new_twitter/_search?size=0&filter_path=hits.total 

其結(jié)果一個(gè)合理的total像這樣:

{
  "hits": {
    "total": 120
  }
}

8. 自動(dòng)切片

你還可以讓重建索引使用切片的_uid來(lái)自動(dòng)并行的滾動(dòng)切片。

POST _reindex?slices=5&refresh
{
  "source": {
    "index": "twitter"
  },
  "dest": {
    "index": "new_twitter"
  }
} 

您可以通過(guò)以下方式驗(yàn)證:

POST new_twitter/_search?size=0&filter_path=hits.total 

其結(jié)果一個(gè)合理的total像這樣:

{
  "hits": {
    "total": 120
  }
}

slices添加到_reindex中可以自動(dòng)執(zhí)行上述部分中使用的手動(dòng)過(guò)程,創(chuàng)建子請(qǐng)求,這意味著它有一些怪癖:

  • 您可以在Task API中看到這些請(qǐng)求。這些子請(qǐng)求是具有slices請(qǐng)求任務(wù)的“子”任務(wù)。

  • 獲取slices請(qǐng)求任務(wù)的狀態(tài)只包含已完成切片的狀態(tài)。

  • 這些子請(qǐng)求可以單獨(dú)尋址,例如取消和重置節(jié)流閥。

  • slices的重置節(jié)流閥請(qǐng)求將按相應(yīng)的重新計(jì)算未完成的子請(qǐng)求。

  • slices的取消請(qǐng)求將取消每個(gè)子請(qǐng)求。

  • 由于slices的性質(zhì),每個(gè)子請(qǐng)求將不會(huì)獲得完全均勻的文檔部分。所有文件都將被處理,但有些片可能比其他片大。預(yù)期更大的切片可以有更均勻的分布。

  • 帶有slices請(qǐng)求的request_per_secondsize的參數(shù)相應(yīng)的分配給每個(gè)子請(qǐng)求。結(jié)合上述關(guān)于分布的不均勻性,您應(yīng)該得出結(jié)論,使用切片大小可能不會(huì)導(dǎo)致正確的大小文檔為_reindex。

  • 每個(gè)子請(qǐng)求都會(huì)獲得源索引的略有不同的快照,盡管這些都是大致相同的時(shí)間。

9. 挑選切片數(shù)量

在這一點(diǎn)上,我們圍繞要使用的slices數(shù)量提供了一些建議(比如手動(dòng)并行化時(shí),切片API中的max參數(shù)):

  • 不要使用大的數(shù)字,500就能造成相當(dāng)大的CPU抖動(dòng)。

  • 從查詢(xún)性能的角度來(lái)看,在源索引中使用分片數(shù)量的一些倍數(shù)更為有效。

  • 在源索引中使用完全相同的分片是從查詢(xún)性能的角度來(lái)看效率最高的。

  • 索引性能應(yīng)在可用資源之間以slices數(shù)量線(xiàn)性擴(kuò)展。

  • 索引或查詢(xún)性能是否支配該流程取決于許多因素,如正在重建索引的文檔和進(jìn)行reindexing的集群。

10. 索引的日常重建

您可以使用_reindex與Painless組合來(lái)重新每日編制索引,以將新模板應(yīng)用于現(xiàn)有文檔。 假設(shè)您有由以下文件組成的索引:

PUT metricbeat-2016.05.30/beat/1?refresh
{"system.cpu.idle.pct": 0.908}

PUT metricbeat-2016.05.31/beat/1?refresh
{"system.cpu.idle.pct": 0.105}

metricbeat-*索引的新模板已經(jīng)加載到Elaticsearch中,但它僅適用于新創(chuàng)建的索引。Painless可用于重新索引現(xiàn)有文檔并應(yīng)用新模板。

下面的腳本從索引名稱(chēng)中提取日期,并創(chuàng)建一個(gè)附帶有-1的新索引。來(lái)自metricbeat-2016.05.31的所有數(shù)據(jù)將重新索引到metricbeat-2016.05.31-1。

POST _reindex
{
  "source": {
    "index": "metricbeat-*"
  },
  "dest": {
    "index": "metricbeat"
  },
  "script": {
    "lang": "painless",
    "inline": "ctx._index = 'metricbeat-' + (ctx._index.substring('metricbeat-'.length(), ctx._index.length())) + '-1'"
  }
}

來(lái)自上一個(gè)度量索引的所有文檔現(xiàn)在可以在*-1索引中找到。

GET metricbeat-2016.05.30-1/beat/1
GET metricbeat-2016.05.31-1/beat/1

以前的方法也可以與更改字段的名稱(chēng)一起使用,以便將現(xiàn)有數(shù)據(jù)加載到新索引中,但如果需要,還可以重命名字段。

11. 提取索引的隨機(jī)子集

Reindex可用于提取用于測(cè)試的索引的隨機(jī)子集:

POST _reindex
{
  "size": 10,
  "source": {
    "index": "twitter",
    "query": {
      "function_score" : {
        "query" : { "match_all": {} },
        "random_score" : {}
      }
    },
    "sort": "_score"    //①
  },
  "dest": {
    "index": "random_twitter"
  }
}

Reindex默認(rèn)按_doc排序,所以random_score不會(huì)有任何效果,除非您將排序重寫(xiě)為_score。

到此,相信大家對(duì)“Reindex API怎么從本地重建索引”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!


文章標(biāo)題:ReindexAPI怎么從本地重建索引
標(biāo)題URL:http://weahome.cn/article/jsdpsd.html

其他資訊

在線(xiàn)咨詢(xún)

微信咨詢(xún)

電話(huà)咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部