簡體   English   中英

使用掃描和滾動,Elasticsearch批量寫入速度很慢

[英]Elasticsearch Bulk Write is slow using Scan and Scroll

我目前遇到的問題是我真的被卡住了。 我正在嘗試解決必須輸出Elasticsearch文檔並將其寫入csv的問題。 文檔范圍從50,000到500萬。 我遇到了嚴重的性能問題,並且感覺到我在這里遺漏了一些東西。

現在,我有一個要掃描和滾動的400,000個文檔的數據集,最終將對其進行格式化並寫入csv。 但是,僅輸出所需的時間為20分鍾! 太瘋狂了

這是我的腳本:

import elasticsearch
import elasticsearch.exceptions 
import elasticsearch.helpers as helpers
import time

es =  elasticsearch.Elasticsearch(['http://XX.XXX.XX.XXX:9200'],retry_on_timeout=True)

scanResp = helpers.scan(client=es,scroll="5m",index='MyDoc',doc_type='MyDoc',timeout="50m",size=1000)

resp={}
start_time = time.time()
for resp in scanResp:
    data = resp
    print data.values()[3]

print("--- %s seconds ---" % (time.time() - start_time))

我正在為Elasticsearch使用托管的AWS m3.medium服務器。

誰能告訴我在這里我可能做錯了什么?

一個簡單的解決方案,以輸出數據ES成CSV是使用Logstash與elasticsearch輸入csv輸出具有以下es2csv.conf配置:

input {
  elasticsearch {
   host => "localhost"
   port => 9200
   index => "MyDoc"
  }
}
filter {
 mutate {
  remove_field => [ "@version", "@timestamp" ]
 }
}
output {
 csv {
   fields => ["field1", "field2", "field3"]  <--- specify the field names you want 
   path => "/path/to/your/file.csv"
 }
}

然后,您可以使用bin/logstash -f es2csv.conf輕松導出數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM