Python创建索引,批量插入数据测试

2023-10-27

 测试

# -*- coding: utf-8 -*-
"""
Created on 2019-6-13 10:19:25
@author: chenlin3
"""

import esSdk

class EsSdkTest():
    def test(self):
        name = EsSdkTest.__name__
        print('begin, %s' % name)

        list=[]
        col = {}
        col['colName'] = 'id'
        col['colType'] = 1
        col['showName'] = 'ID'
        list.append(col)

        col1 = {}
        col1['colName'] = 'name'
        col1['colType'] = 1
        col1['showName'] = '姓名'
        list.append(col1)

        col2 = {}
        col2['colName'] = 'age'
        col2['colType'] = 2
        col2['showName'] = '年龄'
        list.append(col2)

        col3 = {}
        col3['colName'] = 'birth'
        col3['colType'] = 3
        col3['showName'] = '生日'
        list.append(col3)

        dataList = []
        data = {}
        data['id'] = '1'
        data['name'] = '地点'
        data['age'] = '20'
        data['birth'] = '2019/01/01'
        dataList.append(data)
        data = {}
        data['id'] = '2'
        data['name'] = '地点22'
        data['age'] = '4,057,934,769.4598'
        data['birth'] = '2019/02/01'
        dataList.append(data)
        data = {}
        data['id'] = '2'
        data['name'] = '地点11'
        data['age'] = '60,435,766'
        data['birth'] = ''
        dataList.append(data)
        print(dataList)

        esSdk.importData('sdk_index_2','sdktest',list,dataList)


if __name__ == '__main__':
    test = EsSdkTest()
    test.test()

逻辑 

# -*- coding: utf-8 -*-
"""
Created on 2019-6-13 10:19:25
@author: chenlin3
"""
from elasticsearch import Elasticsearch
import datetime
from elasticsearch import helpers
# from elasticsearch.helpers import bulk

# es = Elasticsearch(
#     ['elsearch.com'],
#     timeout=3600
# )
es = Elasticsearch([{'host':'10.10.8.6','port':9200,'timeout':6000}])

def importData(tableName, projectId, columnList, dataList):
    indexName = "scene_" + tableName + "_" + projectId
    res = createIndex(indexName, columnList)
    if res :
        bulk_data(indexName, columnList, dataList)
        print("success")

def bulk_data(indexName, columnList, dataList):
    actions = []
    elements = {}
    for data in dataList:
        element = {}
        for column in columnList:
            name = column["colName"]
            type = column["colType"]
            val = data[name]
            if type==2:
                val = str(val).replace(",","")
            if type ==3 and val =="":
                val = None
            element[name] = val
            element["runtime"] = datetime.datetime.now().strftime('%Y/%m/%d %H:%M:%S')

        elements["_index"] = indexName
        elements["_type"] = indexName
        elements["_source"] = element
        actions.append(elements)

    helpers.bulk(es, actions)


def createIndex(indexName, columnList):
    created = False
    try:
        if es.indices.exists(indexName) is not True:
            properties = {}
            for col in columnList:
                colName = col["colName"]
                prop = {}
                if col["colType"] == 1:
                    prop["type"] = "text"
                    prop["index"] = "not_analyzed"
                if col["colType"] == 2:
                    prop["type"] = "double"
                    prop["index"] = "not_analyzed"
                if col["colType"] == 3:
                    prop["type"] = "date"
                    prop["format"] = "yyyy/MM/dd||yyyy/MM/dd HH:mm:ss"
                    prop["index"] = "not_analyzed"
                properties[colName] = prop

            prop = {}
            prop["type"] = "date"
            prop["format"] = "yyyy/MM/dd||yyyy/MM/dd HH:mm:ss"
            prop["index"] = "not_analyzed"
            properties["runtime"] = prop

            body = {
                "settings": {
                    "index.refresh_interval": "30s",
                    "index.translog.sync_interval": "30s",
                    "index.translog.flush_threshold_size": "1gb",
                    "index.merge.scheduler.max_thread_count": 1
                },
                "mappings": {
                    "all":{
                        "enabled":False
                    },
                    indexName:{
                        "properties": properties
                    }
                }
            }
            es.indices.create(index=indexName, body=body)
        created = True
    except Exception as ex:
        print(ex)
        raise ex
    finally:
        return created

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python创建索引,批量插入数据测试 的相关文章

随机推荐

  • Java 随机读写流 复习题

    题目 在记事本中输入若干同学的姓名和成绩等信息作为原文件 编写一个Java源程序 其中的文件读写部分使用RandomAccessFile类来完成 程序实现的功能如下 编写一个包含主方法main的公共类 访问权限为public的类 主方法ma
  • Git从下载到配置到链接远程仓库全套教程

    目录 前言 一 Git的下载与安装 1 下载 2 安装 二 生成及配置SSH密钥 1 生成SSH密钥 2 配置SSH密钥 三 本地仓库与远程仓库连接并推送到远程仓库 总结 前言 每次进一个新公司都要下载配置git 这些东西也就配置那一次 所
  • pyqt 自定义信号,对默认信号触发的槽函数添加参数

    from PyQt5 QtCore import QObject pyqtSignal class QTypeSignal QObject sendmsg pyqtSignal object 使用pyqtSignal类实列发射信号 obje
  • Cuda

    文章目录 引言 一 Cuda安装 1 选择Cuda版本 2下载及运行安装程序 3 测试 二 Cudnn安装 1 进入官网下载对应cuda版本的cudnn 2 下载好相应版本并进行解压安装 3 解压完成后 4 测试 引言 学习的最大理由是想摆
  • Java知识点之Map(一)

    Map Map相关的内容在面试过程中都是一个重要的点 问深了会涉及到很多数据结构和线程相关的问题 你了解Map吗 常用的Map有哪些 Map是定义了适合存储 键值对 元素的接口 常见的Map实现类有HashMap Hashtable Lin
  • @RunWith注解的作用

    RunWith注解的作用 RunWith就是一个运行器 RunWith JUnit4 class 就是指用JUnit4来运行 RunWith SpringJUnit4ClassRunner class 让测试运行于Spring测试环境 Ru
  • 不容错过的Vue2.0组件开发

    简述 http www jianshu com p 313f11bccb33 utm source tuicool utm medium referral 本文针对于有Vue有一定基础的人学习了解 环境搭建等入门教程网上很多 大家自行学习
  • [ 注意力机制 ] 经典网络模型1——SENet 详解与复现

    Author Horizon Max 编程技巧篇 各种操作小结 机器视觉篇 会变魔术 OpenCV 深度学习篇 简单入门 PyTorch 神经网络篇 经典网络模型 算法篇 再忙也别忘了 LeetCode 注意力机制 经典网络模型1 SENe
  • 增程式电动汽车电控系统优化方法【matlab】

    一 主要内容 针对增程式电动汽车的传动系统架构 结合增程式乘用车和增程式电动公交的设计 对传动系统关键部件选型匹配以及电控系统工作模式进行论述 并论述了工况对行驶里程 以及电池充放电的影响因素 对通用汽车的Volt增程式电动汽车进行分析研究
  • B站价值60亿跨年晚会背后的微服务治理

    B站价值60亿跨年晚会背后的微服务治理 大家都知道微服务有两个痛点 一个是如何拆分微服务 微服务的边界怎么划分制定 二是微服务上了规模之后如何管理 因为只要上了规模 任何小小的问题都可能会被放大 最后导致雪崩效应 一 微服务化带来的挑战 上
  • 《Spring 5.x源码解析之Spring AOP 注解驱动使用及其实现原理》

    Spring 5 x源码解析之Spring AOP 注解驱动使用及其实现原理 学好路更宽 钱多少加班 mercyblitz 一 前言 大家好 欢迎阅读 Spring 5 x源码解析 系列 本篇作为该系列的第二篇 重点介绍Spring AOP
  • 离线搭建深度学习环境

    离线搭建深度学习环境 文章目录 离线搭建深度学习环境 Anaconda3离线安装 借助可联网PC下载安装包 安装Anaconda3 配置深度学习环境 获取深度学习环境 打包深度学习环境 拷贝深度学习环境 添加深度学习环境到环境列表 有时出于
  • Linux使用套接字 udp协议传输

    第一步是来认识库 需要哪些库 需要哪些库中的函数 哥们也只是 初学者 仅仅只是会调用的地步 后面有机会再加深 首先咱们需要清除的知道工作流程 第二步是直接写代码 开发工具 qtcreator6 环境 win10 虚拟机 ubuntu20 0
  • Vue学习杂记(五)——loader的使用

    Vue学习杂记 五 loader的使用 一 什么是loader 二 loader处理css 三 loader处理图片 四 loader处理高级的js语法 参考文献 引言 loader其实也是webpack系列的内容 考虑到webpack涉及
  • gradle使用教程,小白一篇就够

    概述 Gradle是新一代构建工具 从0 x版本一路走来虽然国内可寻的资料多了一些 但都是比较碎片化的知识 官方的Userguide虽然是业内良心之作 但无奈太长 且版本变化较快 又鉴于很多同学一看到英文内心便已认定无法读懂 遂打算利用业余
  • E tensorflow/stream_executor/cuda/cuda_dnn.cc:352] Loaded runtime CuDNN library: 5005 (compatibility

    WARNING tensorflow From usr local lib python2 7 dist packages tensorflow python util tf should use py 170 initialize all
  • MySQL逻辑架构图分析

    MySQL逻辑架构图 大体来说 MySQL 可以分为 Server 层和存储引擎层两部分 Server层 大多数MySQL的核心服务功能都在这一层 包括连接器 查询缓存 分析器 优化器 执行器 以及所有内置函数 日期 时间 数学 加密函数等
  • pnpm:高效、快速的npm

    什么是pnpm performent npm 速度快 节省磁盘空间的软件包管理器 为什么使用pnpm 使用npm安装依赖时 每次都会下载文件到硬盘中 当项目数量较多时 依赖包会占据大量的内存 pnpm就是解决这个问题的 pnpm如何解决 p
  • 手把手教你设置Typora的图床-gitee

    所需环境 typora node软件 所需软件及配置文末可下载 typora的激活安装可看以往教程点我查看typora激活 typora结合gitee图床的优势 分享文件只需要分享一个 md文件即可 插入的图片依旧可以访问 图床不限制 访问
  • Python创建索引,批量插入数据测试

    测试 coding utf 8 Created on 2019 6 13 10 19 25 author chenlin3 import esSdk class EsSdkTest def test self name EsSdkTest