語法:
什麼是partial update?
put /index/type/id,建立文件&替換文件,就是一樣的語法
一般對應到應用程式中,每次的執行流程基本是這樣的:
(1)應用程式先發起乙個get請求,獲取到document,展示到前台介面,供使用者檢視和修改
(2)使用者在前台介面修改資料,傳送到後台
(3)後台**,會將使用者修改的資料在記憶體中進行執行,然後封裝好修改後的全量資料
(4)然後傳送put請求,到es中,進行全量替換
(5)es將老的document標記為deleted,然後重新建立乙個新的document
partial update
post /index/type/id/_update
}看起來,好像就比較方便了,每次就傳遞少數幾個發生修改的field即可,不需要將全量的document資料傳送過去
ut /test_index/test_type/10
post /test_index/test_type/10/_update
}指令碼:
es,其實是有個內建的指令碼支援的,可以基於groovy指令碼實現各種各樣的複雜操作
基於groovy指令碼,如何執行partial update
es scripting module,我們會在高手高階篇去講解,這裡就只是初步講解一下
put /test_index/test_type/11
(1)內建指令碼
post /test_index/test_type/11/_update
}(2)外部指令碼
ctx._source.tags+=new_tag
post /test_index/test_type/11/_update}}
(3)用指令碼刪除文件
ctx.op = ctx._source.num == count ? 'delete' : 'none'
post /test_index/test_type/11/_update}}
(4)upsert操作
post /test_index/test_type/11/_update}],
"type": "document_missing_exception",
"reason": "[test_type][11]: document missing",
"index_uuid": "6m0g7yx7r1kecwwgnfh1sw",
"shard": "4",
"index": "test_index"
},"status": 404
}如果指定的document不存在,就執行upsert中的初始化操作;如果指定的document存在,就執行doc或者script指定的partial update操作
post /test_index/test_type/11/_update
}bulk語法
post /_bulk} }
} }}每乙個操作要兩個json串,語法如下:
}舉例,比如你現在要建立乙個文件,放bulk裡面,看起來會是這樣子的:
}有哪些型別的操作可以執行呢?
(1)delete:刪除乙個文件,只要1個json串就可以了
(2)create:put /index/type/id/_create,強制建立
(3)index:普通的put操作,可以是建立文件,也可以是全量替換文件
(4)update:執行的partial update操作
bulk api對json的語法,有嚴格的要求,每個json串不能換行,只能放一行,同時乙個json串和乙個json串之間,必須有乙個換行
],"type": "json_e_o_f_exception",
"reason": "unexpected end-of-input: expected close marker for object (start marker at [source: org.elasticsearch.transport.netty4.bytebufstreaminput@5a5932cd; line: 1, column: 1])\n at [source: org.elasticsearch.transport.netty4.bytebufstreaminput@5a5932cd; line: 1, column: 3]"
},"status": 500},
"status": 200}},
,"created": true,
"status": 201}},
}},,"created": true,
"status": 201}},
,"created": false,
"status": 200}},
,"status": 200}}
]}bulk操作中,任意乙個操作失敗,是不會影響其他的操作的,但是在返回結果裡,會告訴你異常日誌
post /test_index/_bulk} }
}}} }
post /test_index/test_type/_bulk} }
}}} }
2、bulk size最佳大小
bulk request會載入到記憶體裡,如果太大的話,效能反而會下降,因此需要反覆嘗試乙個最佳的bulk size。一般從1000~5000條資料開始,嘗試逐漸增加。另外,如果看大小的話,最好是在5~15mb之間。
Elasticsearch學習筆記(三)
在elasticsearch中,文件歸屬於一種型別,而這些型別存在於索引中,我們可以畫一些簡單的對比圖來模擬傳統關係型資料庫 relational db databases tables rows columns elasticsearch indices types documents field...
elasticsearch 檢視文件 三
一 檢視info索引下的所有資料 hits hits 看起來還是返回了很多東西,只不過過濾掉了一些字段,如果在我們的文件field比較多的時候,這個api會很有用。二 插敘索引為info,型別為student,id為1的資料 curl localhost 9200 info student 1?pr...
三 Elasticsearch 集群搭建
此處 演示三個節點的偽集群搭建 即單機實現三個節點的es集群 3 現在有三個節點 es 06 01,es 06 02,es 06 03 進入es 06 01 再進入config目錄,開啟 elasticsearch.yml 這是es最重要的配置檔案 4 新增以下配置 分別開啟三個節點的config目...