如何使用Python在ES中自动生成id

时间:2017-08-26 02:06:40

标签: python elasticsearch

我需要像使用XPOST一样存储唯一的自动ID

因为每次启动程序时都会覆盖数据。

但是,我找不到一个在Python中自动生成id的例子

你能否告诉我是否有好的例子?

我的代码:

def saveES(output,es):
    bodys=[]
    i=0
    while i<len(output)-1:  #output[len(output)-1] is space
            json_doc=json.dumps(output[i]) 
            body = {
                    "_index":"crawler",
                    "_type":"typed",
                    "_id":saveES.counter,
                    "_source":json_doc
                    }
            i+=1
            bodys.append(body)
            saveES.counter+=1
    helpers.bulk(es,bodys)

2 个答案:

答案 0 :(得分:3)

您不需要在python中执行此操作 - 如果您索引没有id的文档,Elasticsearch将automatically create a unique id。但是,如果由于某种原因你想在python中生成id,你可以使用uuid

答案 1 :(得分:1)

如果您使用ES Python Client,则没有ID的情况下将无法使用es.create(...)。您应该改为es.index(...)

它们都称为Elasticsearch Index API,但是es.createop_type参数设置为create,并且将es.index设置为index

create操作被设计为在ID已存在的情况下失败,因此它将不接受没有ID的调用。