一尘不染

使用PyE的Elasticsearch大块索引

elasticsearch

我有一个简单的python脚本,用于索引包含一百万行的CSV文件:

import csv
from pyes import *

reader = csv.reader(open('data.csv', 'rb'))

conn = ES('127.0.0.1:9200', timeout=20.0)

counter = 0
for row in reader:
        try:
                data = {"name":row[5]}
                conn.index(data,'namesdb',counter, bulk=True)
                counter += 1
        except:
                pass

这种方法效果很好,但是当我们进入成千上万的时候,它们的速度都呈指数下降。

我猜测如果我在较小的块中进行索引,ES的性能会更好。

有更有效的方法吗?sleep()会延迟帮助吗?还是有一种简单的方法可以通过编程将csv分成较小的块?

谢谢。


阅读 219

收藏
2020-06-22

共1个答案

一尘不染

每运行N次

es.refresh()

这里的例子

2020-06-22