将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内部…...
Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错
Cursor AI模型切换指南:从ChatGPT换到Gemini,这几步千万别做错 在当今快速迭代的AI开发领域,多模型协作已成为提升生产力的关键策略。作为一款深度整合AI能力的智能编辑器,Cursor允许开发者在不同AI模型间灵活切换,但…...
3个跨设备方案:Playnite游戏库的移动化管理创新方法
3个跨设备方案:Playnite游戏库的移动化管理创新方法 【免费下载链接】Playnite Video game library manager with support for wide range of 3rd party libraries and game emulation support, providing one unified interface for your games. 项目地址: https…...
SEO优化文章标题需要注意的重点有什么
SEO优化文章标题需要注意的重点有什么 在当前数字营销的环境中,SEO优化文章标题是吸引目标用户点击的重要因素之一。拥有一个高效的标题不仅可以提升文章的曝光率,还能提高用户的参与度和转化率。SEO优化文章标题需要注意的重点有哪些呢?本文…...
Zebu仿真加速实战:从编译到覆盖率的芯片验证效率提升指南
1. Zebu仿真加速环境配置实战 第一次接触Zebu仿真加速器时,我被它复杂的编译环境折腾得够呛。记得有次项目紧急交付,光是解决编译问题就耗了两天。后来才发现,很多问题其实都有规律可循。 1.1 跨平台编译的坑与解决方案 最让人头疼的就是从…...
Java微服务Istio配置必须立即更新的4个安全补丁:CVE-2024-23652等高危漏洞绕过配置详解
第一章:Java微服务Istio配置安全补丁的紧急性与背景近年来,Java微服务架构在云原生环境中广泛应用,而Istio作为主流服务网格控制平面,承担着流量管理、可观测性与零信任安全策略实施的关键角色。然而,2024年披露的CVE-…...
AI专著生成新玩法!掌握这些工具,快速产出高质量专业专著
学术专著写作挑战与 AI 辅助工具介绍 学术专著的根本价值在于其内容的系统性与内部逻辑的完整性,但这往往是写作中的一个重大挑战。相较于期刊论文专注于某个特定问题,学术专著必须构建一个包括绪论、理论框架、核心研究、应用拓展,以及结论…...
cv_unet_image-matting图像抠图:5分钟快速部署,小白也能轻松上手
cv_unet_image-matting图像抠图:5分钟快速部署,小白也能轻松上手 1. 引言:为什么选择这个工具? 你是否遇到过这样的烦恼:需要快速抠出一张人像照片,但Photoshop操作太复杂?或者有一批产品图片…...
亚马逊AMC数据驱动时代,选对ERP才能玩转精准投放
随着亚马逊广告生态的持续升级,AMC(Amazon Marketing Cloud)作为高阶数据分析工具,正成为头部卖家精细化运营的“标配”。AMC能够整合品牌在亚马逊站内外多渠道的广告与消费者行为数据,但其核心价值在于数据的打通与应…...
如何快速上手LeaguePrank:英雄联盟段位修改工具完整实战指南
如何快速上手LeaguePrank:英雄联盟段位修改工具完整实战指南 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 还在为英雄联盟单调的段位显示感到无聊吗?LeaguePrank是一款开源工具,让你轻松修…...
SEO关键词推广与视频内容创作有什么关系
SEO关键词推广与视频内容创作:一场紧密交织的战斗 在当今的数字化时代,SEO(搜索引擎优化)和视频内容创作已经成为每个企业和个人在网络世界中取得成功的重要途径。SEO关键词推广与视频内容创作究竟有什么关系呢?本文将…...
