本篇內容主要講解“elasticsearch批量入庫bulk性能實例測試”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“elasticsearch批量入庫bulk性能實例測試”吧!
10年積累的做網(wǎng)站、網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有湖里免費網(wǎng)站建設讓你可以放心的選擇與我們合作。
我的需求很簡單,就是用httpCilent組件,通過REST批量接口bulk提交一些數(shù)據(jù)。跑一下代碼1W條數(shù)據(jù)導入完成耗時0.843秒,到這里我本可以高高興興的交差了,但是我又干了一件事情,用Java原生客戶端跑了1W條數(shù)據(jù),發(fā)現(xiàn)導入速度是0.359秒。管他呢,完成任務。但是,,但是我糾結了,作為一個有追求,有思想的碼農,我糾結了。這個時間差距有點大啊。我就懷疑代碼有問題了。我就又用了官方的JEST客戶端試了下速度。發(fā)現(xiàn)速度也不快啊。然后,我的心理就一直纏繞著一個問題,批量導入哪家強?就做了一系列測試。本來測試個Http就好了,但是,又一個但是。我就根本停不下來了。
單位是秒,數(shù)據(jù)量是1W條,總大小是672 kb。httpClient v1是用最笨的方法寫的。V2s是加入了線程池,先初始化Client。速度取了3次的平均值。Java的客戶端快的時候有0.2秒,也就是每秒5W多記錄。測試10W條記錄的時候發(fā)生了一點意外XContentBuilder太吃內存了,也就是JSON解析。我的2G內存的渣渣機器,跑不起來。換了服務器給3G內存測試的。測試數(shù)據(jù)很簡單,下面這樣。
{"create":{"_index":"nq_test2","_type":"base"}}\n{"name":"value1"}\n
第一組
0.359 java
0.843 httpClient v1
0.593 httpClient v2
0.719 jest
0.581 javascript
0.739 python
0.389 nest (.net客戶端)
第二組
10W 條 6825 kb
5.343 python
2.746 httpClient v2
2.145 java
http協(xié)議的REST接口,總是要比TCP協(xié)議的Java原生客戶端要慢一些,意外發(fā)現(xiàn)是C#的Http組件,性能不錯啊。
python
def test(): actions=[] for i in range(1,100001): actions.append({"_index": 'nq_test2', "_type": "python","_source":{ "name":"value"+str(i)}}) starttime = time.clock() helpers.bulk(es,actions,chunk_size=50000) endtime = time.clock() print "cost = "+str(endtime - starttime)
JS
var client = new elasticsearch.Client({ host: 'http://myes:9200', sniffOnStart: false, sniffInterval: 60000, }); function buildData(){ var actions=[]; for(var i=1;i<=10000;i++){ actions.push({ index: { _index: 'nq_test2', _type: 'js'} }); actions.push({ name: 'value'+i }); } return actions; } function test(){ var actions = buildData(); var beginTime = new Date().getTime(); client.bulk({ body: actions }, function (err, resp) { var endTime = new Date().getTime(); //console.info(resp); $("#costDiv").html('cost = '+(endTime-beginTime)/1000.0); $("#tookDiv").html('took = '+resp.took); }); }
Java
public void test(int count) throws IOException{ BulkRequestBuilder bulkRequest = client.prepareBulk(); System.out.println("count ="+count); for(int i=1;i<=count;i++){ bulkRequest.add(client.prepareIndex("nq_test2", "java") .setSource(jsonBuilder() .startObject() .field("name", "value"+i) .endObject() ) ); } long beginTime = System.currentTimeMillis(); BulkResponse bulkResponse = bulkRequest.execute().actionGet(); if (bulkResponse.hasFailures()) { System.out.println("erros"); } long endTime = System.currentTimeMillis(); System.out.println("took ="+bulkResponse.getTookInMillis()); System.out.println("cost = "+(endTime-beginTime)/1000f); }
Jest
public void test() { Bulk.Builder builder = new Bulk.Builder() .defaultIndex("nq_test2") .defaultType("jest"); for(int i=1;i<=10000;i++){ builder.addAction(new Index.Builder("{\"name\":\"value"+i+"\"}").build()); } Bulk bulk =builder.build(); try { long beginTime = System.currentTimeMillis(); JestResult result = client.execute(bulk); long endTime = System.currentTimeMillis(); System.out.println("cost = "+(endTime-beginTime)/1000f); System.out.println("took = "+ result.getValue("took")); } catch (Exception e) { e.printStackTrace(); } }
Nest (c#)
private void testBtn_Click(object sender, EventArgs e) { var settings = new ConnectionSettings( new Uri(urlTxt.Text) ); var Client = new ElasticClient(settings); var Descriptor = new BulkDescriptor(); Descriptor.FixedPath("nq_test2", "dotnet"); var Count = Convert.ToInt32(numericUpDown1.Value); foreach (var i in Enumerable.Range(0, Count)) { Descriptor.Create<Item>(op => op.Document(new Item { name = "value"+i })); } var BeginTime = DateTime.Now.Millisecond; var Result = Client.Bulk(Descriptor); var EndTime = DateTime.Now.Millisecond; label1.Text = "cost = "+((EndTime - BeginTime) / 1000f).ToString()+" sec"; label3.Text = "took = " + Result.Took.ToString() + " sec"; }
到此,相信大家對“elasticsearch批量入庫bulk性能實例測試”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!
網(wǎng)站名稱:elasticsearch批量入庫bulk性能實例測試
本文來源:http://www.muchs.cn/article28/ippjjp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、用戶體驗、網(wǎng)站排名、網(wǎng)站設計公司、標簽優(yōu)化、關鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)