相关疑难解决方法(0)

如何使用Bulk API通过Python将关键字存储在ES中

我必须在ElasticSearch中存储一些与我的python程序集成的消息.现在我尝试存储消息的是:

d={"message":"this is message"}
    for index_nr in range(1,5):
        ElasticSearchAPI.addToIndex(index_nr, d)
        print d
Run Code Online (Sandbox Code Playgroud)

这意味着如果我有10条消息,那么我必须重复我的代码10次.所以我想做的是尝试制作脚本文件或批处理文件.我已经检查了ElasticSearch指南,可以使用BULK API.格式应如下所示:

{ "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } }
{ "field1" : "value1" }
{ "delete" : { "_index" : "test", "_type" : "type1", "_id" : "2" } }
{ "create" : { "_index" : "test", "_type" : "type1", "_id" : "3" } }
{ "field1" : "value3" }
{ "update" : {"_id" : "1", "_type" : "type1", …
Run Code Online (Sandbox Code Playgroud)

python elasticsearch elasticsearch-bulk-api

56
推荐指数
4
解决办法
6万
查看次数

使用PyE的块中的弹性搜索批量索引

我有一个简单的python脚本,用于索引包含100万行的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
Run Code Online (Sandbox Code Playgroud)

这很有效但是当我们进入成千上万时,它们都会成倍地减速.

我猜测如果我在较小的块中做了索引,ES会表现得更好.

有更有效的方法吗?sleep()延迟会有帮助吗?或者是否有一种简单的方法可以通过编程方式将csv分解为更小的块?

谢谢.

python csv elasticsearch

4
推荐指数
1
解决办法
6759
查看次数