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

2021-10-18 13:26:21 字數 1848 閱讀 9698

課程大綱

1mget

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

盡可能減少網路開銷次數,可能可以將效能提公升數倍,甚至數十倍,非常非常之重要

2 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},

「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。一般從10005000條資料開始,嘗試逐漸增加。另外,如果看大小的話,最好是在515mb之間。

10 es 高階用法

一 term vector 1 term vector 獲取document中的某個field內的各個term的統計資訊 term information term frequency in the field,term positions,start and end offsets,term pa...

ES中filter 和map的使用

用於過濾乙個陣列 不操作當前陣列,返回乙個新陣列,裡返回true的元素。let array 1,2,3,4,5 filter function item console.log array 結果 3,4,5 不操作當前陣列,返回乙個新陣列,裡返回什麼,這一項就是什麼。let array2 2,3,4...

快速理解和使用 ES7 await async

await async 是 es7 最重要特性之一,它是目前為止 js 最佳的非同步解決方案了。雖然沒有在 es2016 中錄入,但很快就到來,目前已經在 es next stage 4 階段。傳統的寫法,無需解釋 獲取產品資料 ajax products.json products promise...