动态选择Elasticsearch索引python

时间:2019-07-02 18:54:14

标签: elasticsearch indexing

如何使用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)和修补(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中。

2 个答案:

答案 0 :(得分:0)

  1. 在异常块中打印异常
  2. 检查machid是否为空
  3. 由于没有任何错误,请使用Cat APIS检查在ES中创建的所有索引 curl -X GET“ localhost:9200 / _cat / indices”

答案 1 :(得分:0)

显然,我认为我的代码有效。在createIndex函数中,我有一个日期字段,该字段设置为date,但是上面的代码将日期解析为文本。为了进行测试,当我将日期更改为createIndex中的文本时,所有内容都放置到位。回复此操作即可完成质量检查循环。