一:mget批量處理
1、批量查詢的好處
就是一條一條的查詢,比如說要查詢100條資料,那麼就要傳送100次網路請求,這個開銷還是很大的
如果進行批量查詢的話,查詢100條資料,就只要傳送1次網路請求,網路請求的效能開銷縮減100倍
2、mget的語法
(1)一條一條的查詢
get /test_index/test_type/1
get /test_index/test_type/2
(2)mget批量查詢
get /_mget,]
}},}]
}(3)如果查詢的document是乙個index下的不同type種的話
get /test_index/_mget,]
}(4)如果查詢的資料都在同乙個index下的同乙個type下,最簡單了
get /test_index/test_type/_mget
3、mget的重要性
可以說mget是很重要的,一般來說,在進行查詢的時候,如果一次性要查詢多條資料的話,那麼一定要用batch批量操作的api
盡可能減少網路開銷次數,可能可以將效能提公升數倍,甚至數十倍,非常非常之重要
二、bulk語法
1、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}}
}}} }
}post /test_index/test_type/_bulk} }
}}} }
2、bulk size最佳大小
bulk request會載入到記憶體裡,如果太大的話,效能反而會下降,因此需要反覆嘗試乙個最佳的bulk size。一般從1000~5000條資料開始,嘗試逐漸增加。另外,如果看大小的話,最好是在5~15mb之間。
es使用小結
使用es 1 pom依賴需要引入 org.springframework.boot spring boot starter data elasticsearch 2 持久化層repository需要繼承extends elasticsearchrepository 3 service中注入elast...
es使用經驗小結
es get和post的區別 多個must條件boolquerybuilder boolquerybuilder querybuilders.boolquery must querybuilders.matchphrasequery uri biz must filter querybuilders...
ES索引段合併策略
儘管段合併有這些好處,但使用者也應該了解到段合併的代價,即主要是i o操作的代價。在速度較慢的系統中,段合併會顯著影響效能。基於這個原因,elasticsearch允許使用者選擇段合併策略 merge policy 及儲存級節流 store level throttling 本章後續部分將會討論段合...