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}}
}}}}
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}}
]}
(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...