【发布时间】:2019-11-13 11:02:47
【问题描述】:
如何使用 python 动态选择索引。我目前的代码如下:
import os
import time
import datetime
from datetime import datetime
import shutil
from elasticsearch import Elasticsearch
from esindex import createIndex
client=Elasticsearch()
我有 1000 张图片,图片的名称是:1559624525_cb704087042c76bf.jpg。我将名称分为两部分,时间戳 (1559624525) 和 machid (cb704087042c76bf) 并将其写入 es 索引。
path="/home/ubuntu/images/"
for root, dirs, files in os.walk(path):
for name in files:
try:
dat=name.split('_')[0]
machid=name.split('_')[1]
machid=machid.split('.')[0]
createIndex(machid) ##this creates index dynamically
dat=int(dat)
dat=datetime.utcfromtimestamp(dat).strftime('%d-%m-%Y %H:%M:%S')
dte=dat.split(' ')[0]
id=id+1
doc = {'sequence_id':id,'imagename': name, 'time_stamp': dat, 'date'=dte}
#print(doc)
client.index(index=machid, body=doc) ##this line is not working. If i comment this out, shutil works.
shutil.copy('/home/ubuntu/images/'+ name, '/home/ubuntu/test/')
os.remove('/home/ubuntu/images/' + name)
except Exception:
continue
如何通过动态选择索引将文档输入到 elasticsearch 中。
【问题讨论】:
-
什么版本的 Elasticsearch?如果您运行的是早于 7.x 的 Elasticsearch 版本,您可能会缺少
client.index()函数的type字段。此外,您是否看到任何错误?这里的“不工作”对您意味着什么? -
@rusnyder 我正在使用 7.0.1,其中类型已被弃用...我根本没有收到错误。