从elasticsearch查询并利用查询结果下载图片

从elasticsearch按所给条件查询,利用查询结果的字段下载图片

# -*- coding: utf-8 -*-
import csv
from elasticsearch import Elasticsearch
import requests
import json
import cv2
import numpy as np

url_prefix = "http://xxxxxxx/image/"    #图片服务器地址

# 参数配置://pypi.org/project/elasticsearch/
es = Elasticsearch(hosts="http://xxxxxxx/")   #Elasticsearch地址
print(es.info())
# 查询的条件
query_json = {
"_source":"original_pic",
"query": {
"bool": {
"must": [
{
"term": {
"unit_id": "7839"
}
}
,
{
"range": {
"create_date": {
"gt": "2019-06-08",
"lt": "2019-06-11"
}
}
}
],
"must_not": [ ],
"should": [ ]
}
},
"from": 0,
"size": 100,
"sort": [ ],
"aggs": { }
}

query = es.search(index='camera_flow',body=query_json, scroll="5m")
results = query['hits']['hits'] # 查询出的第一页结果
total = query['hits']['total']  # 查询出的结果总数
scroll_id = query['_scroll_id'] # 游标用于控制输出结果

for i in range(0, int(total/100)+1):
    # scroll必须指定,不然会报错
    query_scroll = es.scroll(scroll_id=scroll_id,scroll='5m')['hits']['hits']
    results += query_scroll
    
all_num = len(results)
for i in range(all_num):
    origin_pic = results[i]['_source']['original_pic']    #获取图片的md5
    img_url = url_prefix+origin_pic         #拼接,获取图片下载的地址
    try:
        r = requests.get(img_url)
    except Exception as e:
        print "The request failed.", e
        continue
    else:
        if r.status_code != 200:
            print "Get img failed."
            continue
        img = cv2.imdecode(np.fromstring(r.content, np.uint8), cv2.IMREAD_COLOR)
        save_name = "D:/download_image/original_pic/"+origin_pic+".jpg"
        cv2.imwrite(save_name, img)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值