我需要像使用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)
答案 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.create
将op_type
参数设置为create
,并且将es.index
设置为index
。
create
操作被设计为在ID已存在的情况下失败,因此它将不接受没有ID的调用。