2017-03-12 11 views
1

ElasticSearchのインデックス作成を高速化するにはどうすればよいですか?

es = Elasticsearch(
    [host_name], 
    port=9243, 
    http_auth=("*****","*******"), 
    use_ssl=True, 
    verify_certs=True, 
    ca_certs=certifi.where(), 
    sniff_on_start=True 
) 

...私はelasticsearchと初心者と私はPythonスクリプトで、(クラウド上でホストされている)弾性検索クラスタに1万人のランダムなイベントを記述する必要がここにインデックス付けのための私のコードです:

for i in range(1000000): 

src_centers=['data center a','data center b','data center c','data center d','data center e'] 
transfer_src = np.random.choice(src_centers, p=[0.3, 0.175, 0.175, 0.175, 0.175]) 

dst_centers = [x for x in src_centers if x != transfer_src] 
transfer_dst = np.random.choice(dst_centers) 

final_transfer_status = ['transfer-success','transfer-failure'] 

transfer_starttime = generate_timestamp() 
file_size=random.choice(range(1024,10000000000)) 
ftp={ 
    'event_type': 'transfer-queued', 
    'uuid': uuid.uuid4(), 
    'src_site' : transfer_src, 
    'dst_site' : transfer_dst, 
    'timestamp': transfer_starttime, 
    'bytes' : file_size 
} 
print(i) 
es.index(index='ft_initial', id=(i+1), doc_type='initial_transfer_details', body= ftp) 

transfer_status = ['transfer-success', 'transfer-failure'] 
final_status = np.random.choice(transfer_status, p=[0.95,0.05]) 
ftp['event_type'] = final_status 

if (final_status=='transfer-failure'): 
    time_delay = 10 
else : 
    time_delay = int(transfer_time(file_size)) # ranges roughly from 0-10000 s 

ftp['timestamp'] = transfer_starttime + timedelta(seconds=time_delay) 
es.index(index='ft_final', id=(i+1), doc_type='final_transfer_details', body=ftp) 

プロセスを高速化する方法はありますか?

助けてください/ポインタはありがとうございます。ありがとう。

+0

何をスピードアップしますか?インデックス作成は?プログラム自体?あなたの要求を明確にしてください – Adonis

+0

クラスタトポロジーを私たちと共有したり、断片、ノード(マスタ/データ)、クラスタマシンのハードウェア仕様を共有することはできますか?また、elasticsearch.ymlファイルを追加してください。 – user3775217

+0

トポロジ:: {EVENT_TYPE: "転送キューに入れられた"、 UUID:471a885a-9d8a-4212-8ebc-d1bc96c91b3b、 バイト:5411345、 タイムスタンプ:2017-03-04T05:40:40 src_site:「データセンターA "、 dst_site:"データセンターc "} –

答えて

3
  1. 使用バルク、そうでない場合は、各単一の要求のためのオーバーヘッドをたくさん持っている:あなたが完了しているまで、理想的に完全にそれを無効にし、https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html
  2. 変更リフレッシュレート:監視https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-update-settings.html#bulk
  3. 使用(空きがあります実際にボトルネック(IO、メモリ、CPU)が何であるかを確認するには、次のように入力します。https://www.elastic.co/guide/en/x-pack/current/xpack-monitoring.html
+0

私はそれを正確に行うことで解決しました。helpers.bulk()関数を使用しました。 –

関連する問題