本篇內(nèi)容主要講解“elasticsearch批量入庫(kù)bulk性能實(shí)例測(cè)試”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“elasticsearch批量入庫(kù)bulk性能實(shí)例測(cè)試”吧!
10年積累的做網(wǎng)站、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站設(shè)計(jì)后付款的網(wǎng)站建設(shè)流程,更有湖里免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
我的需求很簡(jiǎn)單,就是用httpCilent組件,通過(guò)REST批量接口bulk提交一些數(shù)據(jù)。跑一下代碼1W條數(shù)據(jù)導(dǎo)入完成耗時(shí)0.843秒,到這里我本可以高高興興的交差了,但是我又干了一件事情,用Java原生客戶端跑了1W條數(shù)據(jù),發(fā)現(xiàn)導(dǎo)入速度是0.359秒。管他呢,完成任務(wù)。但是,,但是我糾結(jié)了,作為一個(gè)有追求,有思想的碼農(nóng),我糾結(jié)了。這個(gè)時(shí)間差距有點(diǎn)大啊。我就懷疑代碼有問(wèn)題了。我就又用了官方的JEST客戶端試了下速度。發(fā)現(xiàn)速度也不快啊。然后,我的心理就一直纏繞著一個(gè)問(wèn)題,批量導(dǎo)入哪家強(qiáng)?就做了一系列測(cè)試。本來(lái)測(cè)試個(gè)Http就好了,但是,又一個(gè)但是。我就根本停不下來(lái)了。
單位是秒,數(shù)據(jù)量是1W條,總大小是672 kb。httpClient v1是用最笨的方法寫的。V2s是加入了線程池,先初始化Client。速度取了3次的平均值。Java的客戶端快的時(shí)候有0.2秒,也就是每秒5W多記錄。測(cè)試10W條記錄的時(shí)候發(fā)生了一點(diǎn)意外XContentBuilder太吃內(nèi)存了,也就是JSON解析。我的2G內(nèi)存的渣渣機(jī)器,跑不起來(lái)。換了 第一組 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組件,性能不錯(cuò)啊。 python JS Java Jest Nest (c#) 到此,相信大家對(duì)“elasticsearch批量入庫(kù)bulk性能實(shí)例測(cè)試”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!測(cè)試結(jié)論
測(cè)試代碼
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)
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);
});
}
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);
}
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();
}
}
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
文章名稱:elasticsearch批量入庫(kù)bulk性能實(shí)例測(cè)試
鏈接地址:http://weahome.cn/article/ippjjp.html