文档章节

elasticsearch 导入导出CSV

纳兰琴
 纳兰琴
发布于 2014/11/03 16:51
字数 328
阅读 5.2K
收藏 2

坦白说,这是第一个python程序,虽然看起来写的很烂,但是你放心,我试过了无毒,而且运行结果,既然是正确的!

导出CSV

import csv
import sys
import logging
import datetime 
from elasticsearch import Elasticsearch

reload(sys)  
sys.setdefaultencoding('gbk')
logging.basicConfig()
es = Elasticsearch()

def exportCSV(indexName):
    count = 0
    finish=False
    csvfile = file(indexName+'.csv','wb')
    writer = csv.writer(csvfile)
    starttime = datetime.datetime.now()
    searchRes = es.search(index=indexName,size=100,body={"query": {"match_all": {}}},search_type="scan",scroll="60s")
    while True:
        scrollRes=es.scroll(scroll_id=searchRes["_scroll_id"],scroll="60s",ignore=[400, 404])
        res_list = scrollRes["hits"]["hits"]
        data=[]
        
        if not len(res_list) or finish:
            break
        if count==0:
            writer.writerow(tuple(res_list[0]["_source"].keys()))
        for item in res_list:
            #print tuple(item["_source"].values())
            data.append(tuple(item["_source"].values()))
            count+=1
            if count>=100000:
                finish=True
                break

        writer.writerows(data)
    csvfile.close()
    endtime = datetime.datetime.now()
    print "export size = "+str(count)
    print "export cost = "+str(endtime - starttime)
    

if __name__=="__main__":
   exportCSV("test")

导入CSV

# -*- coding:utf-8 -*- 
import csv
import sys
import os
import logging
import datetime 
from elasticsearch import Elasticsearch
from elasticsearch import helpers

reload(sys)  
sys.setdefaultencoding('gbk')
logging.basicConfig()
es = Elasticsearch()

def importCSV(indexName,typeName,fileName):
    if not os.path.exists(fileName):
        print "file not found"
        return
    actions=[]
    if not es.indices.exists(index=indexName,allow_no_indices=True):
        #print "not found index"
        es.indices.create(index=indexName,body={},ignore=400)
    for item in csv.DictReader(open(fileName, 'rb')):  
        actions.append({"_index":indexName,"_type":typeName,"_source":encoding(item)})
    res = helpers.bulk(es,actions,chunk_size=100)
    es.indices.flush(index=[indexName])
    return len(actions)

def encoding(item):
    for i in item:
        item[i]=str(item[i]).encode('utf-8')
    return item    

if __name__=="__main__":
    starttime = datetime.datetime.now()
    result=importCSV("test","base","test.csv")
    print "import size = "+str(result)
    endtime = datetime.datetime.now()
    print "import cost = "+str(endtime - starttime)



© 著作权归作者所有

纳兰琴
粉丝 51
博文 23
码字总数 13442
作品 0
杭州
高级程序员
私信 提问
VulnWhisperer:数据可被ElasticSearch索引的漏洞数据及报告整合工具

  VulnWhisperer是一个漏洞数据和报告的整合工具。VulnWhisperer会提取所有报告并创建一个具有唯一文件名的文件,然后将其发送给logstash。Logstash则会从文件名中提取数据标记报告中的所有...

FreeBuf
2018/07/26
0
0
kubernetes addons efk

一、简介 这个附加组件由Elasticsearch, Fluentd和Kibana组合而成。 通过结合这三个工具,我们获得了一个可扩展的,灵活的,易于使用的日志收集和分析管道。 Elasticsearch是一个搜索引擎,...

Bravepro
2018/06/29
0
0
高性能Elasticsearch ORM开发库bboss es 5.0.3.7.8发布

bboss es v5.0.3.7.8已发布。bboss elasticsearch是一套基于query dsl语法操作访问分布式搜索引擎elasticsearch的o/r mapping开发库,底层基于es restful api。使用bboss es,可以快速编写出...

bboss
2017/11/16
2.3K
4
Elasticsearch与Solr搜索引擎选型调研文档

Elasticsearch ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开...

小海bug
2018/06/28
294
0
ElasticSearch ik,elasticsearch-jdbc 使用 和 yii2 实例

1.ES安装+ik插件 mac安装和使用: a.由于ES为java开发 所以首先安装下载jdk,由于最新版本对jdk要求>1.8.0,所以可以通过brew 升级jdk b.brew 安装ES 启动 elasticsearch 后,在浏览器地址:127....

罗培海
2017/12/16
462
0

没有更多内容

加载失败,请刷新页面

加载更多

《算法》笔记 9 - 散列表

散列函数 基于拉链法的散列表 实现 性能 基于线性探测法的散列表 实现 性能 如果所有的键都是小整数,则可以用一个数组来作为无序的符号表,将键作为数组的索引,数组中对应的位置保存的值就...

zhixin9001
27分钟前
59
0
工作自由--2020年开篇,开启一个项目:工作自由 worksolo.cn

新年伊始,我突发奇想,也是很多人敢想而不敢做的事情,下面我以一个多年软件开发从业者的角度去思考,去设计这个项目,当然希望看到这篇文章的你可以给我更多思路: 项目名称:工作自由 域名...

_aron_
今天
39
0
王道 第一章 计算机系统概述

这门课学的是逻辑实现,不是具体的机型 主要内容: 基本部件的结构和组织方式 基本运算的操作原理 基本部件和单元的设计思想 处理器+内存=计算机 存储器 存储器(高速缓存、主存储器、虚拟存...

heronos
今天
85
0
SpringBoot+Mybatis+Thymeleaf-Build Blog site_1

1、快速构建Springboot项目 (1)、 Spring Boot 项目目录结构介绍 (2)、 Spring Boot 项目启动的几种方式 2、 (1)、hello blog (2)、 DispatchServlet 配置 (3)、 静态 web 资源如何...

杨木发
今天
136
0
关于docker0: iptables: No chain/target/match by that name的问题解决

由于Docker 0默认网桥的iptables策略冲突问题,将导致一些web server启动时出现如下错误: docker: Error response from daemon: driver failed programming external connectivity on endpo......

王焱君
今天
103
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部