将json数据导入到ES集群——解决方案对比填坑日记
需求
将写好的json数据。导入到es集群
数据说明
文件JSON数据,一行一个JSON。
{"id":"d2716ae8fba4e026c4bd9445c3f49e2c","lang":"zh","title":"吉美旅馆","content":"吉美..."}
{"id":"d2716ae8fba4e026c4bd9445c3f49e2d","lang":"zh","title":"大话西游","content":"大话西游..."}
背景说明
ES 版本 8.X,开启了密码认证
使用elasticsearchDump 工具把json数据导入到ES集群中。
遇到的坑与解决方法
方案1:dump工具
工具:https://github.com/elasticsearch-dump/elasticsearch-dump
坑1:由于ES密码中有特殊符号。在使用dump工具的时候。命令如下
elasticdump \
--input=/u01/isi/data/baike_result/1/baike_info_html_9.jsonl_step2 \
--output="http://elastic:abcd%12%34@localhost:9200/self_index"
报错如下:URI malformed
Mon, 06 Nov 2023 11:59:20 GMT | starting dump
Mon, 06 Nov 2023 11:59:20 GMT | got 100 objects from source file (offset: 0)
Mon, 06 Nov 2023 11:59:20 GMT | Error Emitted => URI malformed
Mon, 06 Nov 2023 11:59:20 GMT | Error Emitted => URI malformed
Mon, 06 Nov 2023 11:59:20 GMT | Total Writes: 0
Mon, 06 Nov 2023 11:59:20 GMT | dump ended with error (get phase) => URIError: URI malformed
导致此问题的原因:因为密码中有特殊符号。
解决方案看这里:elasticsearch - How to solve malformed URI while using elasticdump? - Stack Overflow
方案里边说:需要把密码转ascll码。但是我测了没用,可能是因为百分号导致的。
我的最终解决方案是,在ES中新加了一个用户,不添加特殊符号。这种靠谱一些。但是操作起来,如果不熟悉ES的鉴权,也是很麻烦的。
Security APIs | Elasticsearch Guide [8.10] | Elastic这里是ES的添加用户的文档。
注意先添加权限,再配置角色,在添加用户。权限赋给角色,角色赋给用户。一通操作下来,还是遇到了问题,最终没能执行下去。
报错如下
status: 500,
error: {
type: 'not_x_content_exception',
reason: 'not_x_content_exception: Compressor detection can only be called on some xcontent bytes or compressed xcontent bytes'}
问题原因。这里其实是最根本的原因。可以再看看上边的JSON数据。看起来没有问题,但是这种数据无法被dump工具识别。
我把数据改造了一下,如下所示
{"_index":"my_index","_id":"1","_source":{"id":"d2716ae8fba4e026c4bd9445c3f49e2c","lang":"zh","title":"吉美旅馆","content":"吉美..."}}
上边改造后的数据是可以写入的。但是需要做数据改造。也挺麻烦。
elasticdump \
--input=/u01/isi/data/baike_result/1/temp.json \
--output=http://elasticinsert:angus123321@localhost:9200/baike_info_test \
--type=data
方案2:logstash工具
转弯掉头。因为改造数据也挺麻烦。特别是在大批量数据下。我决定使用logstash,第一不用决绝用户密码问题。第二不用处理数据
操作步骤如下:
第一步:下载logstash。下载地址:Logstash 8.8.0 | Elastic
第二步:上传服务器,并解压。
第三步:在解压后的conf目录下。添加一个logstash的配置 logstash-self.conf
input {
file {
# path => "/u01/isi/data/result/1/baike_info_html_8.jsonl_step2"
# 这里,我是获取指定目录下,全部的文件
path => ["/u01/isi/data/result/2/*"]
start_position => "beginning"
sincedb_path => "/dev/null"
codec => "json"}
}filter {
# 这里可以定义其他过滤规则。这里我只要json中的这几个字段。
prune {
whitelist_names => ["id", "url", "content", "title", "lang"]}
}output {
elasticsearch {
hosts => "http://localhost:9200"
index => "self_index"
user => "elastic"
password => "abcd%12%34"
document_id => "%{id}"}
# 这里是调试用的。可以看看json数据是否正确。
# stdout {
# codec => rubydebug
#}
}
第四步:启动开始做数据导入
到解压后的目录中,可以看到bin目录和conf目录。以后台的方式启动任务。日志会打印到当前目录中的 out.log 文件中。nohup bin/logstash -f ./conf/logstash-self.conf >> out.log & 如果想结束任务。则使用 ps -ef |grep logstash 即可看到任务进程,使用kill -9 任务id即可结束任务。
相关文章:
将json数据导入到ES集群——解决方案对比填坑日记
需求 将写好的json数据。导入到es集群 数据说明 文件JSON数据,一行一个JSON。 {"id":"d2716ae8fba4e026c4bd9445c3f49e2c","lang":"zh","title":"吉美旅馆","content":"吉美..."}…...
C语言----------#pragma预处理分析
一、#pragma预处理分析 1、#pragma是编译器指示字,用于指示编译器完成一些特定的动作; 2、#pragma所定义的很多指示字是编译器和操作系统特有的; 3、#pragma在不同的编译器间是不可移植的: 预处理器将忽略它不认识的#pragma指…...
数据库中的时间django转换成None
原因 数据库中使用的是datetime[64] 的格式。精确的毫秒了。django默认的使用的是datetime.datetime.fromisoformat转换的。转换不了 使用原生查找 for raw in StockNominate.objects.raw("select id,code,strftime(%Y-%m-%d,date) as date from table_name; "):pr…...
八种流行的网络协议
1、HTTP(超文本传输协议),HTTP 是一种用于获取 HTML 文档等资源的协议。它是 Web 上任何数据交换的基础,是一种客户端 - 服务器协议。 2、HTTP/3,HTTP/3 是 HTTP 的下一个重大修订版。它运行在 QUIC 上,QU…...
Qwt QwtKnob绘制旋钮
1.简介 QwtKnob是Qwt库中的一个类,用于绘制一个旋钮样式的仪表盘。它继承QwtAbstractSlider类,提供了一些额外的功能和样式,用于旋转和选择值。 以下是类继承关系: 2.常用方法 旋钮(Knob)相关的属性和方法…...
docker部署elk
目录 前言 一、创建程序工作路径 二、创建私有网络 三、部署elasticsearch 1.先搜速后下载 2.创建一个基础的容器(此步骤是为了拷贝容器里的文件) 3.拷贝文件到宿主机 3.1进入容器 3.2拷贝并授权 3.3删除基础容器 4.创建容器 5.访问9200测试 …...
护网蓝队初级面试题摘录(下)
小王学习录 1.设备误报如何处理?2.讲一下TOP10都有哪些3.SQL注入的原理和漏洞产生的原因?4.SQL注入的类型盲注类型: 5.简单讲一下防范SQL注入的方法和原理6.SQL注入有哪些绕过姿势?7.SQL注入攻击有哪些危害?6.XSS&…...
通过51单片机控制SG90舵机按角度正反转转动
一、前言 本文介绍如何通过51单片机控制SG90舵机实现角度的正反转转动。SG90舵机是一种常用的微型舵机,具有体积小、重量轻、结构简单等特点,被广泛应用于机器人、遥控模型和各种自动控制系统中。 使用51单片机(STC89C52)作为控…...
uniapp写一个计算器用于记账(微信小程序,APP)
提要:自己用uniapp写了一个记账小程序(目前是小程序),写到计算器部分,在网上找了别人写的计算器,大多数逻辑都是最简单的,都不能满足一个记账计算器的基本逻辑。与其在网上找来找去,…...
前端的几种网络请求方式
网络请求 node编写接口 这里用到的几个包的作用 express:基于 Node.js 平台,快速、开放、极简的 Web 开发框架,官网:https://www.expressjs.com.cn/cors:用来解决跨域问题body-parser:可以通过 req.body…...
Kubernetes技术与架构-存储 4
如上所示,Kubernetes集群支持动态申请存储资源,即集群管理员可以按照实际的需求动态地申请存储资源,集群管理员需要事先定义一个或者多个StorageClass存储类型的资源,Pod中的容器实例直接引用事先定义的StorageClass存储类型的资源…...
jbase编译与部署的优化
上一篇的演示只是涉及自动编译业务脚本。演示时候工程编译是超级慢的。因为把静态资源放在了Web工程下,每次编译都要拷贝,运行起码是1分钟,不能忍受,为此思考工程结构改解决这个问题,顺带方便开发的发布。运行WebLoade…...
Filter 和 Listener
Filter 表示过滤器。是JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把对资源的请求 拦截 下来。浏览器可以访问服务器上所有的资源,而在访问到这些资源之前可以使用过滤器拦截下来,也就是说在访问资源之前会先经…...
【正则表达式】中的“\b“
正则表达式是一种用于匹配字符串的强大工具,它可以用于各种编程语言中,可以用来在文本中查找、替换或验证符合某种规则的内容。 正则表达式中有很多特殊的符号,称为元字符,它们有着特殊的含义和作用。其中,“\b” 是其…...
FPGA高端项目:图像采集+GTP+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持
目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案 3、设计思路框架设计框图视频源选择OV5640摄像头配置及采集动态彩条视频数据组包GTP 全网最细解读GTP 基本结构GTP 发送和接收处理流程GTP 的参考时钟GTP 发送接口GTP …...
数据库系统原理与实践 笔记 #7
文章目录 数据库系统原理与实践 笔记 #7数据库设计和E-R模型(续)转换为关系模式具有简单属性的实体集的表示复合属性多值属性联系集的表示模式的冗余—合并 实体-联系设计问题设计问题联系属性的布局 扩展的E-R特性特化概化属性继承特化/概化的设计约束聚集E-R图表示方法总结E-…...
【CesiumJS】(1)Hello world
介绍 Cesium 起源于2011年,初衷是航空软件公司(Analytical Graphics, Inc.)的一个团队要制作世界上最准确、性能最高且具有时间动态性的虚拟地球。取名"Cesium"是因为元素铯Cesium让原子钟非常准确(1967年,人们依据铯原子的振动而对…...
Docker 学习路线 5:在 Docker 中实现数据持久化
Docker 可以运行隔离的容器,包括应用程序和其依赖项,与主机操作系统分离。默认情况下,容器是临时的,这意味着容器中存储的任何数据在终止后都将丢失。为了解决这个问题并在容器生命周期内保留数据,Docker 提供了各种数…...
linux下使用vscode对C++项目进行编译
项目的目录结构 头文件swap.h 在自定义的头文件中写函数的声明。 // 函数的声明 void swap(int a,int b);swap.cpp 导入函数的声明,写函数的定义 #include "swap.h" // 双引号表示自定义的头文件 #include <iostream> using namespace std;// 函…...
LangChain+LLM实战---ChatGPT的即时插件套件制作
英文原文:Instant Plugins for ChatGPT: Introducing the Wolfram ChatGPT Plugin Kit 在一分钟内构建一个新插件 几周前,我们与OpenAI合作发布了Wolfram插件,使ChatGPT可以使用Wolfram语言和Wolfram|Alpha作为工具,在ChatGPT内部…...
Visual Studio 项目属性页开发完全教程:从基础到高级
Visual Studio 项目属性页开发完全教程:从基础到高级 【免费下载链接】project-system The .NET Project System for Visual Studio 项目地址: https://gitcode.com/gh_mirrors/pr/project-system Visual Studio 项目属性页是开发者管理项目配置的核心界面&a…...
2026在线测评系统十大量表对比:信效度与场景全解析
【30s 核心摘要】2026 年在线测评成人才管理刚需,信效度与场景适配成选型核心。本文聚焦十大量表,从信度、效度、适配场景等维度深度对比,重点解析问卷星、北森、金数据等主流平台的量表能力与落地效果,为企业、高校及机构提供科学…...
AI赋能5G核心网故障诊断:从PCAP解析到智能根因分析的工程实践
1. 项目概述:当AI遇见5G核心网故障诊断在5G核心网的运维与测试一线干了这么多年,最头疼的莫过于面对海量的PCAP抓包文件。一个复杂的信令流程下来,动辄几千甚至上万个数据包,工程师需要像侦探一样,逐帧审视协议交互&am…...
从入门到上岗,Java+AI 复合型人才养成攻略
当下编程行业格局正在悄然改变,纯 Java 后端岗位内卷日趋严重,薪资增长逐步放缓;纯粹的 AI 算法岗门槛居高不下,对学历、数理功底要求严苛,普通开发者很难入局。 而Java+AI 复合型开发顺势成为行业刚需岗位,既依托成熟的 Java 体系承接业务开发,又能融入人工智能技术实…...
HFSS仿真结果怎么看?一文读懂S参数与电场图,让你的T型波导分析不再迷茫
HFSS仿真结果深度解析:从S参数到电场图的工程实践指南面对HFSS仿真生成的复杂数据图表,许多工程师常陷入"看得见数据却读不懂含义"的困境。本文将带您穿透数据表象,掌握T型波导性能分析的核心方法论。1. S参数:波导性能…...
录音会议纪要整理不同使用场景,实用口碑选择建议
针对不同场景的录音整理需求(短录音、中长录音、长内容深度整理),本文基于实际使用体验,分享不同场景下的工具选择建议与使用心得。一、场景一:短录音(15-60分钟,发音清晰)典型场景&…...
Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取
Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取微信小程序作为轻量级应用的代表,已经渗透到电商、社交、工具等各个领域。随着小程序功能的日益复杂,自动化测试成为保障产品质量的重要手段。本文将带你快速搭建微信小程序…...
Performance-Fish:让你的《环世界》后期游戏帧率提升400%的终极优化方案
Performance-Fish:让你的《环世界》后期游戏帧率提升400%的终极优化方案 【免费下载链接】Performance-Fish Performance Mod for RimWorld 项目地址: https://gitcode.com/gh_mirrors/pe/Performance-Fish 你是否曾在《环世界》游戏后期,面对庞大…...
独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken Token Plan,以更低成本启动AI项目 对于独立开发者或小型团队而言,启动一个集成…...
用图神经网络做缺陷定位,准确率比传统方法高出30%
在现代软件工程的复杂迷宫中,缺陷定位始终是测试团队面临的核心挑战。想象这样一个场景:一个电商系统在特定压力条件下偶发订单丢失,日志中只留下泛泛的超时错误,问题可能深藏在上百个微服务的调用链、分布式事务的竞态条件或某个…...
