現(xiàn)在面向?qū)ο缶幊谭浅A餍?,?duì)象作為一個(gè)整體存儲(chǔ)在NoSQL數(shù)據(jù)庫(kù)中,經(jīng)常以JSON的格式。一個(gè)JSON通常也成為文檔(document),elasticsearch就是文檔(JSON)的形式存儲(chǔ)數(shù)據(jù)的。
文檔存儲(chǔ)涉及概念

元數(shù)據(jù)概念.png
索引
PUT /{index}/{type}/{id}
{
"field": "value",
...
}
獲取
GET /{index}/{type}/{id}?pretty
檢查文檔存在
curl -i -XHEAD http://localhost:9200/{index}/{type}/{id}
更新
文檔在Elasticsearch中是不可變的——我們不能修改他們。
更新整個(gè)文檔
在內(nèi)部,Elasticsearch標(biāo)記舊文檔為刪除并添加一個(gè)完整的新文檔,_version加1。
PUT /{index}/{type}/{id}
局部更新
局部更新的步驟為:
1 從舊文檔中檢索JSON
2 修改它
3 刪除舊文檔
4 索引新文檔
更新語句:
POST /website/blog/1/_update
{
"doc" : {
"tags" : [ "testing" ],
"views": 0
}
}
更新沖突解決
Elasticsearch是分布式的。當(dāng)文檔被創(chuàng)建、更新或刪除,文檔的新版本會(huì)被復(fù)制到集群的其它節(jié)點(diǎn)。index、get、delete請(qǐng)求時(shí),每個(gè)文檔都有一個(gè)_version號(hào)碼,這個(gè)號(hào)碼在文檔被改變時(shí)加一。Elasticsearch使用這個(gè)_version保證所有修改都被正確排序。當(dāng)一個(gè)舊版本出現(xiàn)在新版本之后,它會(huì)被簡(jiǎn)單的忽略。