ES合併操作小結

2021-08-10 09:37:55 字數 1548 閱讀 6190

一: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 本章後續部分將會討論段合...