添加URL
相关文章推荐
1043605696  ·  Python Traceback ...·  1 年前    · 
天涯  ·  python提示AttributeError ...·  3 年前    · 
9976254  ·  pip 安装依赖包 报错 No ...·  1 年前    · 

https://segmentfault.com/q/1010000005027014

对,就是使用elasticsearch内置的bulk API进行批量的插入操作。
同样,python elasticsearch lib也提供了bulk API的功能,因此便有如下代码:

from elasticsearch import Elasticsearch
from elasticsearch import helpers
import pymysql
import time
# 连接ES
es = Elasticsearch(
    ['127.0.0.1'],
    port=9200
# 连接MySQL
print("Connect to mysql...")
mysql_db = "test"
m_conn = pymysql.connect(host='127.0.0.1, port=3306, user='root', passwd='root', db=mysql_db, charset='utf8')
m_cursor = m_conn.cursor()
try:
    num_id = 0
    while True:
        s = time.time()
        # 查询数据
        sql = "select name,age,area from testTable LIMIT {}, 100000".format(num_id*100000)
        # 这里假设查询出来的结果为 张三 26 北京
        m_cursor.execute(sql)
        query_results = m_cursor.fetchall()
        if not query_results:
            print("MySQL查询结果为空 num_id=<{}>".format(num_id))
            break
        else:
            actions = []
            for line in query_results:
            # 拼接插入数据结构
                action = {
                    "_index": "company_base_info_2",
                    "_type": "company_info",
                    "_source": {
                        "name": line[0],
                        "age": line[1],
                        "area": line[2],
				# 形成一个长度与查询结果数量相等的列表
                actions.append(action)
            # 批量插入
            a = helpers.bulk(es, actions)
            e = time.time()
            print("{} {}s".format(a, e-s))
        num_id += 1
finally:
    m_cursor.close()
    m_conn.close()
    print("MySQL connection close...")

代码的关键在于构造action结构,放入列表中,给helpers.bulk(es, actions)传参,调用方法真的是很简单了。

下面用py_es client来解析geojson,并使用bulk api导入es py_es client :https://elasticsearch-py.readthedocs.io/en/7.6.0/ 导入速度大概是:1500条/秒 # aganliang 20200519 # 使用ES python api插入geojson点...
用python操作elasticsearchpython连接 elasticsearch 进行搜索python连接 elasticsearch 增加文档 python连接 elasticsearch 进行搜索 用 python 操作 elasticsearch 使用的第三方库是 elasticsearch from elasticsearch import Elasticsearch # host 是 ES 的主机IP,port 是 ES 的端口号 es = Elasticsearch([{'host':
使用Python往Elasticsearch插入数据 在这里,我使用Elasticsearch官方推荐elasticsearch第三方包来讲述插入数据的两种方法。 1. index 这是很简单的一个插入数据的方法,每条数据调用一个index方法,代码如下from datetime import datetime from elasticsearch import Elasticsearches
for i in range(0,1000): newDic = {"key":"value"} action = {"_index": IndexName, "_type": TypeName, "_id": _id, "_source": newDic} actions.append(action) #--------------bukl index ac
使用python,批量导入数据elasticsearch使用python官方模块,批量将文件中的数据导入到elasticsearch中。 1、文件内容 文件以{url:content}组成且以“\t”隔开,例子如下: http://www.avsforum.com/forum/39-networking-media-servers-content-streaming/1624586-
想问下作者为啥你获取的数据就是中文也很正常,我从neo4j获取的数据是乱码,能解决吗 [code=python] [{'r': (a3e1785)-[:`开票人`]->(ca250c7)}, {'r': (a3e1785)-[:`复核`]->(da99c6d)}, {'r': (a3e1785)-[:`收款人`]->(da99c6d)}, [/code] 访问Neo4j验证失败(The client is unauthorized due to authentication failure.) LS_learner: 这个貌似不适合桌面版的neo4j 使用docker部署基于selenium和chrome-headless的爬虫 为什么使用standalone-chrome这个镜像 node地址就变成 http://127.0.0.1:4444/wd/hub 也没启动selenium hub容器。 难道standalone-chrome这个镜像都把HUB和NODE都给集成了吗? 使用Alpine Linux的Docker镜像安装Python及相关依赖包 Nick_Spider: 有帮助就好~ 使用Python-elasticsearch-bulk批量快速向elasticsearch插入数据 余音丶未散: 删除或者更新需要添加什么参数啊