ES的document的全量替換、強(qiáng)制創(chuàng)建與刪除

1、document的全量替換

(1)語法與創(chuàng)建文檔是一樣的,如果document id不存在,那么就是創(chuàng)建;如果document id已經(jīng)存在,那么就是全量替換操作,替換document的json串內(nèi)容
(2)document是不可變的,如果要修改document的內(nèi)容,第一種方式就是全量替換,直接對(duì)document重新建立索引,替換里面所有的內(nèi)容
(3)es會(huì)將老的document標(biāo)記為deleted,然后新增我們給定的一個(gè)document,當(dāng)我們創(chuàng)建越來越多的document的時(shí)候,es會(huì)在適當(dāng)?shù)臅r(shí)機(jī)在后臺(tái)自動(dòng)刪除標(biāo)記為deleted的document

#添加
PUT /test_insex/test_type/4
{
  "test_field":"test test"
}
#全量替換
PUT /test_insex/test_type/4
{
  "test_field2":"test test test test2"
}
#查詢
GET /test_insex/test_type/4
#返回
{
  "_index": "test_insex",
  "_type": "test_type",
  "_id": "4",
  "_version": 2,
  "found": true,
  "_source": {
    "test_field2": "test test test test2"
  }
}
全量替換過程說明,也可以當(dāng)做document delete的原理

2、document的強(qiáng)制創(chuàng)建

創(chuàng)建文檔與全量替換的語法是一樣的,有時(shí)我們只是想新建文檔,不想替換文檔,如果強(qiáng)制進(jìn)行創(chuàng)建呢?

#語法
PUT /index/type/id?op_type=create 或者 PUT 
/index/type/id/_create
#一般采用后者的方式居多
#操作
PUT /test_insex/test_type/4/_create
{
  "test_field":"test"
}
#如果是已存在的情況下去創(chuàng)建則會(huì)報(bào)錯(cuò)

3、document的刪除

不會(huì)直接物理刪除,只會(huì)將其標(biāo)記為deleted,但是你已經(jīng)查詢不到的。當(dāng)數(shù)據(jù)越來越多的時(shí)候,在后臺(tái)自動(dòng)刪除。

#語法
DELETE /index/type/id
#操作
DELETE  /test_insex/test_type/4
#返回
{
  "found": true,
  "_index": "test_insex",
  "_type": "test_type",
  "_id": "4",
  "_version": 4,
  "result": "deleted",
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  }
}
最后編輯于
?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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