elasticsearch之修改文檔

在 Elasticsearch 中文檔是 不可改變 的,不能修改它們。在我們對(duì)文檔進(jìn)行更新操作的時(shí)候,都會(huì)將舊文檔刪除,在原來(lái)的位置創(chuàng)建新的文檔.

更新整個(gè)文檔

UT /website/blog/123
{
  "title": "My first blog entry",
  "text":  "I am starting to get the hang of this...",
  "date":  "2014/01/02"
}


{
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 2,
  "created":   false
}

我們會(huì)發(fā)現(xiàn)"_version"字段變成了2,這是因?yàn)檫@個(gè)字段標(biāo)志著版本號(hào),表示這是在這個(gè)index,這個(gè)type,這個(gè)id下,第二次存儲(chǔ)的數(shù)據(jù).

創(chuàng)建新文檔

因?yàn)閕ndex, type,id會(huì)唯一標(biāo)識(shí)的一個(gè)文檔,當(dāng)我們給出了相同的index,type,id時(shí),這不會(huì)創(chuàng)建新的文檔,而是刪除存在的文檔,將新的JSON文檔存儲(chǔ)在這個(gè)命名空間里.

  • 使用POST /index/type/,elasticsearch會(huì)自動(dòng)為我們創(chuàng)建一個(gè)唯一的id
POST /website/blog/
{ ... } 

在指定的index,type,id創(chuàng)建文檔,如果指定的命名空間里沒(méi)有文檔則創(chuàng)建,有則報(bào)錯(cuò)。

  • 使用op_type參數(shù)(optype=create)
PUT /website/blog/123?op_type=create
{ ... }
  • 第二種方法是在 URL 末端使用 /_create.
PUT /website/blog/123/_create
{ ... }

刪除文檔

  • 刪除指定的文檔
DELETE /website/blog/123

{
  "found" :    true,
  "_index" :   "website",
  "_type" :    "blog",
  "_id" :      "123",
  "_version" : 3
}

需要注意的是: _version字段的值加了1,表示這個(gè)index,type,id表示的命名空間執(zhí)行了3次操作,即使文檔不存在, _version 值仍然會(huì)增加。這是 Elasticsearch 內(nèi)部記錄本的一部分,用來(lái)確保這些改變?cè)诳缍喙?jié)點(diǎn)時(shí)以正確的順序執(zhí)行

處理沖突

有時(shí)候,在進(jìn)行并行處理的時(shí)候可能會(huì)出現(xiàn)沖突,如下所示:


QQ截圖20181022013334.jpg

解決方法:

  • 悲觀并發(fā)控制

這種方法被關(guān)系型數(shù)據(jù)庫(kù)廣泛使用,它假定有變更沖突可能發(fā)生,因此阻塞訪問(wèn)資源以防止沖突。 一個(gè)典型的例子是讀取一行數(shù)據(jù)之前先將其鎖住,確保只有放置鎖的線程能夠?qū)@行數(shù)據(jù)進(jìn)行修改。

  • 樂(lè)觀并發(fā)控制

Elasticsearch 中使用的這種方法假定沖突是不可能發(fā)生的,并且不會(huì)阻塞正在嘗試的操作。 然而,如果源數(shù)據(jù)在讀寫(xiě)當(dāng)中被修改,更新將會(huì)失敗。應(yīng)用程序接下來(lái)將決定該如何解決沖突。 例如,可以重試更新、使用新的數(shù)據(jù)、或者將相關(guān)情況報(bào)告給用戶。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,724評(píng)論 19 139
  • [TOC] 一、什么是文檔? 在大多數(shù)應(yīng)用中,多數(shù)實(shí)體或?qū)ο罂梢员恍蛄谢癁榘I值對(duì)的 JSON 對(duì)象。 一個(gè) 鍵...
    溯水心生閱讀 688評(píng)論 0 0
  • 官網(wǎng)地址:https://www.elastic.co/cn/ 官網(wǎng)權(quán)威指南:https://www.elasti...
    Anwar_ec28閱讀 6,911評(píng)論 0 11
  • 今夜我不想遇到世上的一切 除了你 我多想見(jiàn)你一眼就死去 然后將我的骨灰撒在你將要走過(guò)的路上 你走過(guò)的時(shí)候我就與你相遇
    自由行走的貓1998閱讀 205評(píng)論 1 3
  • 生命是什么?時(shí)間又是什么? 雖然每個(gè)人都有生命,但在乎生命的有又有多少人! 生命猶如那一縷青煙,時(shí)光就好比吹...
    晶晶_3a41閱讀 299評(píng)論 0 0

友情鏈接更多精彩內(nèi)容