Elasticsearch官檔翻譯——1.4 修改數(shù)據(jù)

修改數(shù)據(jù)

Elasticsearch提供近實(shí)時的數(shù)據(jù)操作和搜索功能。默認(rèn)情況下,數(shù)據(jù)從寫入/更新到被檢索到需要1s(刷新間隔配置的時間)左右鸳劳。這是和其他存儲引擎一個很重要的不同呆馁,像數(shù)據(jù)庫中的數(shù)據(jù)窄做,事務(wù)執(zhí)行完后數(shù)據(jù)就立馬可見队询。

索引/替換文檔

我們之前已經(jīng)知道如何創(chuàng)建一個文檔了佃迄,在執(zhí)行一次:

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
"name": "John Doe"
}'

上面將指定文檔索引到customer索引的externaltype中泼差,id為1贵少。如果我們再次執(zhí)行上面的命令,用不同或相同的文檔堆缘,Elasticsearch將會用新的文檔覆蓋上面的現(xiàn)有的id為1的那個文檔(或稱作reindex)滔灶。

curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '
{
"name": "Jane Doe"
}'

上面的命令將id為1的文檔名從"John Doe"改為了"Jane Doe"。另一方面套啤,如果我們使用不同的id宽气,將會創(chuàng)建一個新的文檔到索引中,原有的文檔將不會被改變潜沦。

curl -XPUT 'localhost:9200/customer/external/2?pretty' -d '
{
"name": "Jane Doe"
}'

上面的命令索引了一個ID為2的新文檔萄涯。
索引的時候,ID參數(shù)是可選的唆鸡,如果沒有指定涝影,Elasticsearch將會生成一個隨機(jī)的ID并用他作為文檔ID,ES生成的ID(或者我們指定了的ID)將會作為調(diào)用API的返回結(jié)果返回争占。
下面的例子告訴我們?nèi)绾尾恢付↖D創(chuàng)建文檔燃逻。

curl -XPOST 'localhost:9200/customer/external?pretty' -d '
{
"name": "Jane Doe"
}'

注意,上面的例子因?yàn)闆]有指定ID臂痕,所以我們用的是POST請求伯襟,而不是PUT
譯者批注:實(shí)際使用中譯者使用POST和PUT都可以實(shí)現(xiàn)插入更新,并沒有發(fā)現(xiàn)什么不同握童,實(shí)際上源碼里也能看到姆怪,創(chuàng)建文檔的handler里面能同時處理POST和PUT兩類請求


更新文檔

除了新建或覆蓋文檔,我們還能修改文檔澡绩。但是要注意Elasticsearch底層并不是直接在原來的數(shù)據(jù)上做更新稽揭。每當(dāng)我們執(zhí)行更新操作,ES刪除老文檔然后創(chuàng)建新文檔肥卡,這兩步是在一次更新請求中完成的溪掀。
下面的例子展示如何修改之前那個ID為1的文檔,修改名字為”Jane Doe“步鉴。

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"doc": { "name": "Jane Doe" }
}'

下面的例子展示如何修改文檔的名字為”Jane Doe“并增加一個age字段:

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"doc": { "name": "Jane Doe", "age": 20 }
}'

更新操作也可以使用簡單的腳本揪胃。注意,像下面這種動態(tài)腳本在1.4.3版本默認(rèn)是禁止的氛琢,細(xì)節(jié)請看scripting docs只嚣。這個腳本的作用是給年齡加5:

curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '
{
"script" : "ctx._source.age += 5"
}'

譯者批注:腳本功能十分強(qiáng)大,但是并不推薦使用艺沼,特別是查詢册舞。類似關(guān)系型數(shù)據(jù)庫的存儲過程,雖然能處理復(fù)雜業(yè)務(wù)邏輯但是把過于復(fù)雜的邏輯置于ES引擎對性能是一種損耗障般,ES默認(rèn)禁用這個特性也是有道理的调鲸。

上面的例子中盛杰,ctx._source引用的是你要更新的文檔(也就是ID為1的文檔)。
注意一次只能修改一個文檔藐石,未來版本可能會提供批量按條件修改的API即供,類似SQL中的 update where條件。


刪除文檔

刪除文檔相當(dāng)簡單于微,下面的例子表示刪除ID為2的文檔:

DELETE /customer/doc/2?pretty

刪除同樣也提供了批量刪除API(插件)逗嫡,不過值得一提的是,如果需要清空數(shù)據(jù)株依,刪除整個索引比批量刪除所有文檔效率更高驱证。

譯者批注:關(guān)于批量修改,還有批量刪除恋腕,都有對應(yīng)的插件抹锄,但實(shí)際上也是使用滾動查詢?nèi)缓笠粭l條刪除,執(zhí)行速度十分慢荠藤,若該過程執(zhí)行較長伙单,服務(wù)層等待隊(duì)列可能會出現(xiàn)請求超時,因此該特性建議在測試環(huán)境哈肖,或命令行模式流量低峰期使用吻育,線上接口不推薦提供。推薦使用批量更新或刪除接口淤井,或多起幾個線程單條刪除布疼。)


批量操作

除了增刪改單個文檔之外,以上操作ES還提供了批量執(zhí)行: _bulk API庄吼,批量機(jī)制十分高效,能利用盡可能少的網(wǎng)絡(luò)開銷來盡可能提升數(shù)據(jù)處理速度严就。
示例如下总寻,下面使用一個批量接口索引兩個文檔:

POST /customer/doc/_bulk?pretty
{"index":{"_id":"1"}}
{"name": "John Doe" }
{"index":{"_id":"2"}}
{"name": "Jane Doe" }

更新第一個文檔并刪除第二個文檔:

POST /customer/doc/_bulk?pretty
{"update":{"_id":"1"}}
{"doc": { "name": "John Doe becomes Jane Doe" } }
{"delete":{"_id":"2"}}

注意第二個刪除操作,操作中并不包含源文檔信息梢为,因?yàn)閯h除只需要提供ID即可渐行。

批量操作其中一個操作失敗了,并不會影響整個操作铸董,如果一個操作失敗了其他操作還是會繼續(xù)執(zhí)行祟印。當(dāng)批量執(zhí)行結(jié)束,會得到一個返回響應(yīng)粟害,里面包括每個操作的狀態(tài)碼信息蕴忆,你可以通過這個信息觀察某個操作是否失敗。

上一節(jié):Elasticsearch官檔翻譯——1.3 探索集群

下一節(jié):Elasticsearch官檔翻譯——1.5 探索數(shù)據(jù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末悲幅,一起剝皮案震驚了整個濱河市套鹅,隨后出現(xiàn)的幾起案子站蝠,更是在濱河造成了極大的恐慌,老刑警劉巖卓鹿,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件菱魔,死亡現(xiàn)場離奇詭異,居然都是意外死亡吟孙,警方通過查閱死者的電腦和手機(jī)澜倦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來杰妓,“玉大人藻治,你說我怎么就攤上這事≈墒В” “怎么了栋艳?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長句各。 經(jīng)常有香客問我吸占,道長,這世上最難降的妖魔是什么凿宾? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任矾屯,我火速辦了婚禮,結(jié)果婚禮上初厚,老公的妹妹穿的比我還像新娘件蚕。我一直安慰自己,他們只是感情好产禾,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布排作。 她就那樣靜靜地躺著,像睡著了一般亚情。 火紅的嫁衣襯著肌膚如雪妄痪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天楞件,我揣著相機(jī)與錄音衫生,去河邊找鬼。 笑死土浸,一個胖子當(dāng)著我的面吹牛罪针,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黄伊,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼泪酱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起西篓,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤愈腾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后岂津,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虱黄,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年吮成,在試婚紗的時候發(fā)現(xiàn)自己被綠了橱乱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡粱甫,死狀恐怖泳叠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情茶宵,我是刑警寧澤危纫,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站乌庶,受9級特大地震影響种蝶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜瞒大,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一螃征、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧透敌,春花似錦盯滚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至撵术,卻和暖如春背率,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荷荤。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工退渗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留移稳,地道東北人蕴纳。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像个粱,于是被迫代替她去往敵國和親古毛。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,802評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 基礎(chǔ)概念 Elasticsearch有幾個核心概念,從一開始理解這些概念會對整個學(xué)習(xí)過程有莫大的幫助稻薇。 接近實(shí)時(...
    山天大畜閱讀 2,104評論 0 4
  • 博客原文一博客原文二 翻譯作品嫂冻,水平有限,如有錯誤塞椎,煩請留言指正桨仿。原文請見 官網(wǎng)英文文檔 起步 Elasticse...
    rabbitGYK閱讀 3,228評論 0 68
  • 一些概念 索引-index: 一個索引就是一個擁有幾分相似特征的文檔的集合。比如說案狠,你可以有一個客戶數(shù)據(jù)的索引服傍,另...
    perfect_jimmy閱讀 3,544評論 0 0
  • Elasticsearch是一個開源的、高度可擴(kuò)展的全文搜索與分析引擎骂铁。它可以存儲海量的數(shù)據(jù)吹零,能近乎實(shí)時地搜索和分...
    VastVanity閱讀 434評論 0 0
  • 一個才華橫溢的女子灿椅,一段美好又遺憾的愛情,一句“生當(dāng)做人杰钞支,死亦為鬼雄”的豪情茫蛹。 李清照的一生中可以說遭遇了巨大的...
    葡葡萄閱讀 596評論 0 6