0
私はreIndex ElasticSearchを使用しようとしていますが、スキャンとバルクAPIを使用しましたが、非常に遅いです。 次のように私のpythonコード:reIndex ElasticSearchと並行する方法
actions=[]
for hit in helpers.scan(es,scroll='20m',index=INDEX,doc_type=TYPE,params=
{"size":100}):
value= hit.get('_source')
idval = hit.get('_id')
action = indexAction(INDEX_2,TYPE_2,idval,value)
actions.append(action)
count+=1
if(count%200==0):
helpers.bulk(es, actions,stats_only=True,params=
{"consistency":"one","chunk_size":200})
actions=[]
は私がスキャン複数のプロセスを作るべきか、私はバルク複数のプロセスを行う必要があります。私はElasticSearch-Hadoopがこれをどのように実装するのかBean Wanderingをしました。私のインデックスは10ノードと20のシャードを持っています。
ありがとう、私は私の質問を変更しました。もう一度私を助けてください。 – Jack
私のpythonは少し錆びますが、Pythonのmutliprocessingを使用して、複数のプロセスからのバルクインデックスリクエストを起動できます。 https://docs.python.org/2/library/multiprocessing.htmlを参照してください。上記のようにクエリを分割することができます。 –
私はバルクをマルチプロセスする方法を知っていますが、問題はスキャンに約半分の時間がかかることです。たとえば、再インデックス処理全体が10時間かかりました。バルク部分を削除してスキャン部分のみを実行すると、5時間かかります。だから問題は、どのようにスキャン速度を早めることができるかということです。 – Jack