一简肴、概述
本篇主要翻譯官網(wǎng)的index相關(guān)的API
index:索引,后續(xù)不再翻譯
參考鏈接:
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-index_.html#_version_types
二榨咐、APIs
1介却、Automatic Index Creation 自動創(chuàng)建index
// 允許twitter、index10及與ind*匹配的請求自動創(chuàng)建index
//不允許與index1*匹配的創(chuàng)建索引
PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "twitter,index10,-index1*,+ind*"
}
}
// 不允許自動創(chuàng)建索引
PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "false"
}
}
//允許自動創(chuàng)建索引
PUT _cluster/settings
{
"persistent": {
"action.auto_create_index": "true"
}
}
2块茁、Operation Type 操作類型
PUT twitter/_doc/1?op_type=create
// 等價于
PUT twitter/_create/1
這個時候齿坷,如果文檔的id已經(jīng)存在,則會報錯
3数焊、Automatic ID Generation 自動生成文檔ID
使用POST方式即可
POST twitter/_doc/
4永淌、Optimistic concurrency control 樂觀鎖機制控制并發(fā)
采用類似數(shù)據(jù)庫樂觀鎖的機制,每次寫入都會附帶一個版本號
5佩耳、Routing 路由
默認情況下遂蛀,寫入的時候,es會根據(jù)文檔的id做hash分配響應(yīng)的shard干厚,并由shard所在的node完成數(shù)據(jù)的寫入李滴,當然,也可以手工指定路由
POST twitter/_doc?routing=kimchy
5蛮瞄、Distributed 分發(fā)
primary寫入完成后所坯,會分發(fā)給repila進行寫入
6、Wait For Active Shards 等待可用的片
默認情況下挂捅,wait_for_active_shards=1芹助,即只要primary shard或者就可以寫入
當然,也可以修改為不大于index下所有shards的一個數(shù)闲先,比如有1個primay状土,3個repila,那么wait_for_active_shards最大是1+3=4個伺糠,超過這個數(shù)字會報錯蒙谓,如果設(shè)置為3,那么只要有1個primary和2個repila活著就允許寫入退盯,如果這個時候有一個repila掛了彼乌,那么這個寫入操作就會等待master重新拉起來一個repila泻肯,或者等待超時返回錯誤。
7慰照、Refresh 刷新
這個應(yīng)該是保證本次寫入后灶挟,repila一定能同步吧,用到再說吧
8毒租、Noop Updates 空更新
在 Index API中稚铣,每次針對文檔的更新,都會產(chǎn)生一個版本號墅垮,就算你什么都沒有修改惕医,如果不想修改,那么需要使用 Update API算色,并且設(shè)置detect_noop=true
9抬伺、Timeout 超時
默認的超時時間是1分鐘?也可以自己設(shè)置灾梦,下面就將超時時間設(shè)置成了5分鐘
PUT twitter/_doc/1?timeout=5m
10峡钓、Versioning 版本
可以顯示地指定本次操作的版本
PUT twitter/_doc/1?version=2&version_type=external
上面的version=2,如果再執(zhí)行版本號 <= 2的若河,如下面的url能岩,會報錯
PUT twitter/_doc/1?version=1&version_type=external
11、Version Type 版本類型
不太理解萧福,先copy上原文吧
-
internal
Only index the document if the given version is identical to the version of the stored document. -
external or external_gt
Only index the document if the given version is strictly higher than the version of the stored document or if there is no existing document. The given version will be used as the new version and will be stored with the new document. The supplied version must be a non-negative long number. -
external_gte
Only index the document if the given version is equal or higher than the version of the stored document. If there is no existing document the operation will succeed as well. The given version will be used as the new version and will be stored with the new document. The supplied version must be a non-negative long number.