ES mget批量查詢 bulk批量增刪改

2021-08-28 10:19:22 字數 2543 閱讀 6425

1、mget批量查詢

get /_mget

,

]}

},}

]}

2、查詢的document是乙個index下的不同type

get /test_index/_mget

,

]}

},}

]}

3、查詢的資料都在同乙個index下的同乙個type下

get /test_index/test_type/_mget

},}

]}

4、bulk批量增刪改

(1) bulk語法

有哪些型別的操作可以執行呢?

(1)delete:刪除乙個文件,只要1個json串就可以了

(2)create:put /index/type/id/_create,強制建立

(3)index:普通的put操作,可以是建立文件,也可以是全量替換文件

(4)update:執行的partial update操作

post /_bulk}}

}}}}

],"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@8625f29; line: 1, column: 1])\n at [source: org.elasticsearch.transport.netty4.bytebufstreaminput@8625f29; line: 1, column: 3]"

},"status": 500

}

bulk api對json的語法,有嚴格的要求,每個json串不能換行,只能放一行,同時乙個json串和乙個json串之間,必須有乙個換行

post /_bulk}}

}}}}

,

"_seq_no": 10,

"_primary_term": 1,

"status": 404}},

}},}},

,"_seq_no": 6,

"_primary_term": 1,

"status": 200}},

,"_seq_no": 2,

"_primary_term": 1,

"status": 200}}

]}

bulk操作中,任意乙個操作失敗,是不會影響其他的操作的,但是在返回結果裡,會告訴你異常日誌

(2) bulk size最佳大小

bulk request會載入到記憶體裡,如果太大的話,效能反而會下降,因此需要反覆嘗試乙個最佳的bulk size。一般從1000~5000條資料開始,嘗試逐漸增加。另外,如果看大小的話,最好是在5-15mb之間。

(3)bulk api的奇特json格式與底層效能優化關係大揭秘

1、如果採用比較良好的json陣列格式

允許任意的換行,整個可讀性非常棒,讀起來很爽,es拿到那種標準格式的json串以後,要按照下述流程去進行處理

(1)將json陣列解析為jsonarray物件,這個時候,整個資料,就會在記憶體中出現乙份一模一樣的拷貝,乙份資料是json文字,乙份資料是jsonarray物件

(2)解析json陣列裡的每個json,對每個請求中的document進行路由

(3)為路由到同乙個shard上的多個請求,建立乙個請求陣列

(4)將這個請求陣列序列化

(5)將序列化後的請求陣列傳送到對應的節點上去

2、耗費更多記憶體,更多的jvm gc開銷

我們之前提到過bulk size最佳大小的那個問題,一般建議說在幾千條那樣,然後大小在10mb左右,所以說,可怕的事情來了。假設說現在100個bulk請求傳送到了乙個節點上去,然後每個請求是10mb,100個請求,就是1000mb = 1gb,然後每個請求的json都copy乙份為jsonarray物件,此時記憶體中的占用就會翻倍,就會占用2gb的記憶體,甚至還不止。因為弄成jsonarray之後,還可能會多搞一些其他的資料結構,2gb+的記憶體占用。

3、現在的奇特格式

(1)不用將其轉換為json物件,不會出現記憶體中的相同資料的拷貝,直接按照換行符切割json

(2)對每兩個一組的json,讀取meta,進行document路由

(3)直接將對應的json傳送到node上去

最大的優勢在於,不需要將json陣列解析為乙個jsonarray物件,形成乙份大資料的拷貝,浪費記憶體空間,盡可能地保證效能

bulk es 刪除 ES 批量操作 bulk

文章目錄 基本語法 批量操作的型別 實操create update delete 復合操作 參考資源 基本語法 bulk操作和以往的普通請求格式有區別。不要格式化json,不然就不在同一行了,這個需要注意。n n n n 代表批量操作的型別,可以是新增 刪除或修改 n是每行結尾必須填寫的乙個規範,每...

es之8 批量查詢mget 批量增刪改bulk

get mget 如果docs內的document都是同乙個index則可以簡略為 get ecommerce mget 如果docs內的document都是同乙個index同乙個type則可以進一步簡略為 get ecommerce product mget 1 bulk語法 post bulk ...

(10)ES使用mge和bulk批量操作

課程大綱 1mget 1 批量查詢的好處 就是一條一條的查詢,比如說要查詢100條資料,那麼就要傳送100次網路請求,這個開銷還是很大的 如果進行批量查詢的話,查詢100條資料,就只要傳送1次網路請求,網路請求的效能開銷縮減100倍 2 mget的語法 1 一條一條的查詢 get test inde...