Elasticsearch docker-compose 使用 Logstash 从 JSON 文件中预加载数据
在我们创建 Elasticsearch 进行开发时,最简单的办法就是在本地使用 docker-compose 来一键部署一个 Elasticsearch 集群。有时,特别是在准备测试环境时,开发人员希望从一开始就创建包含一些测试数据的数据库容器。我们可以使用 Logstash 来很方便地把数据写入到 Elasticsearch 中。

在我之前的文章 “Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack”,我有讲到这个方法。在今天的文章中,我们通过另外一种方法来实现。你可以在地址 https://github.com/liu-xiao-guo/elasitcPreloadData 下载所有的代码。
首先,我们项目的根目录下创建一个 .env 的文件。
.env
ELASTIC_PASSWORD=DEFAULT
STACK_VERSION=7.17.14
ES_PORT=9203
接下来创建 docker-compose.yaml 配置文件:
docker-compose.yaml
version: "2.2"
services:es01:image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION}ports:- ${ES_PORT}:9200environment:- node.name=es01- cluster.initial_master_nodes=es01- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}- bootstrap.memory_lock=true- xpack.security.enabled=truehealthcheck:test:["CMD-SHELL","curl -s -k http://localhost:9200",]interval: 10stimeout: 10sretries: 120logstash:build:context: logstash/dockerfile: Dockerfiledepends_on:es01:condition: service_healthyenvironment:- ELASTICSEARCH_URL=http://es01:9200- ELASTICSEARCH_USERNAME=elastic- ELASTIC_PASSWORD=${ELASTIC_PASSWORD}- XPACK_MONITORING_ENABLED=false
有几点需要注意:
- 使用 xpack.security.enabled 为 Elasticsearch 启用用户名/密码身份验证。 如果不需要,请将其删除,以便默认值为 false。
- 健康检查只是为了得到 9200 端口的响应
- Logstash 将从 Docker 文件构建
Logstash 的 Dockerfile:
logstash/Dockerfile
FROM docker.elastic.co/logstash/logstash:7.17.14COPY importData.conf /usr/share/logstash/pipeline
RUN mkdir /usr/share/logstash/data-test/
COPY testdata.json /usr/share/logstash/data-test/
COPY --chmod=0755 progress.sh /tmp
#Install exec plugin to run shell script in Logstash pipeline
RUN bin/logstash-plugin install logstash-output-execENTRYPOINT ["/usr/local/bin/docker-entrypoint"]
JSON 数据文件应将每个文档包含为一行,如下所示:
{"name": "Bobbie", "emailaddress": "Bob@mail2u.org", "address": "1186 Neil Court", "country": "UK", "birthdate": "1995-10-15T01:00:00Z",}
{"name": "Helen", "emailaddress": "Hele@mail.ru", "address": "839 Federal Ridge", "country": "Hungary", "birthdate": "1985-11-03T01:00:00Z"}
要在 Logstash 中运行的管道配置文件应定义输入文件(我们的 JSON 数据测试文件)和输出(插入 Elasticsearch 并运行自定义脚本):
input {file {path => "/usr/share/logstash/data-test/testdata.json"mode => "read"codec => json { }exit_after_read => truetype => "sample"}
}
filter {mutate {remove_field => [ "log", "@timestamp", "event", "@version" ]}
}
output {elasticsearch {hosts => "${ELASTICSEARCH_URL}"index => "test_data"user => "elastic"password => "${ELASTIC_PASSWORD}"ssl_certificate_verification => false}exec {command => "/tmp/progress.sh"}
}
Logstash 旨在成为一种监听连续输入流的服务。 通常停止它是没有意义的,因为新数据无论何时到来都应该通过管道进行处理。 然而在这种情况下,我只想 Logstash 导入我的测试数据,然后停止释放资源。
这是我在导入数据后终止 Logstash 容器的一种 hack:
#!/bin/bashCHECK="$ELASTICSEARCH_URL/test_data/_count"
#Expected data test size is 10 documents
CONDITION="\"count\":10"while [ true ]
do if curl -u $ELASTICSEARCH_USERNAME:$ELASTIC_PASSWORD $CHECK | grep -q "$CONDITION"; then#Kill Logstash service so container would stopkill $(ps aux | grep 'logstash' | awk '{print $2}')breakelseecho "Counting documents from Elasticsearch does not return the expected number. Retrying"sleep 2fi
done
现在只需 docker-compose up -d ,大约 2 分钟后,Elasticsearch 就会启动并创建索引,其中包含一些文档。
相关文章:
Elasticsearch docker-compose 使用 Logstash 从 JSON 文件中预加载数据
在我们创建 Elasticsearch 进行开发时,最简单的办法就是在本地使用 docker-compose 来一键部署一个 Elasticsearch 集群。有时,特别是在准备测试环境时,开发人员希望从一开始就创建包含一些测试数据的数据库容器。我们可以使用 Logstash 来很…...
<文件操作及常用的API>
文章目录 专栏导读🚀简单认识一下文件🚀树形结构和目录🚀文件路径-相对路径、绝对路径🚀文件类型🚀Java中文件的操作🚀File 类的常用方法 专栏导读 🚀多线程章节 💐数据结构剖析 &am…...
深入探讨Linux中的文本文件查看命令
目录 前言1 cat命令2 less命令3 more命令4 head命令5 tail命令6 总结 前言 在Linux系统中,文本文件是日常工作中不可或缺的一部分,无论是配置文件、日志文件还是代码文件,都需要用到文本文件查看命令。在本文中,我们将深入研究一…...
asp.net企业员工档案信息管理系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
一、源码特点 asp.net企业员工档案信息管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 asp.net企业员工档案信息管理系统 二、功能介绍 本系统使用Microsoft Visual Studio 2019为开发工具&…...
WPF中的xmlns 和xmlns:x有什么区别?
WPF (Windows Presentation Foundation) 中的 xmlns 和 xmlns:x 是XML命名空间的声明,它们在XAML(eXtensible Application Markup Language)中被广泛使用。XAML是WPF、Silverlight、Xamarin.Forms等技术中用于定义UI元素的标记语言。 xmlns: …...
为什么流量卡禁区多,而手机卡却可以用呢?
很多朋友比较关心流量卡禁区的问题,当我们申请流量卡时,运营商都会在套餐详情中标明具体的禁发地区,这个时候很多朋友都会有疑问了,为什么流量卡不能用的地区,可以申请到手机卡呢。 想要清楚这个问题࿰…...
Linux 桌面应用
Part I: Linux 系统概述 什么是 LinuxLinux 的历史和版本Linux 发行版介绍Linux 的优缺点 Part II: Linux 安装与配置 5. 硬件要求与准备工作 6. 安装 Linux 操作系统 7. Linux 系统初始化设置 8. Linux 系统更新与升级 9. Linux 基础配置 Part III: Linux 命令行 10. Linux…...
NLP领域的突破催生大模型范式的形成与发展
当前的大模型领域的发展,只是范式转变的开始,基础大模型才刚刚开始改变人工智能系统在世界上的构建和部署方式。 1、大模型范式 1.1 传统思路(2019年以前) NLP领域历来专注于为具有挑战性的语言任务定义和设计系统,…...
大模型的全面回顾,看透大模型 | A Comprehensive Overview of Large Language Models
大模型的全面回顾:A Comprehensive Overview of Large Language Models 返回论文和资料目录 论文地址 1.导读 相比今年4月的中国人民大学发表的大模型综述,这篇综述角度更侧重于大模型的实现,更加硬核,更适合深入了解大模型的一…...
【瑞禧分享】碳化硅纳米线 SiC纳米线 <100nm SiC晶须 SiC短纤维
碳化硅纳米线 规格或纯度:线/晶须含量:99% 供应商:西安瑞禧生物 英文名称:SiC Nanowire 别名:碳化硅纳米线,SiC晶须,SiC短纤维,SiC纳米线 英文别名:SiC Nanowire,SiC whiskers,SiC fiber 介绍&#x…...
P3371 【模板】单源最短路径(弱化版)
【模板】单源最短路径(弱化版) 题目背景 本题测试数据为随机数据,在考试中可能会出现构造数据让SPFA不通过,如有需要请移步 P4779。 题目描述 如题,给出一个有向图,请输出从某一点出发到所有点的最短路…...
一文入门Springboot+actuator+Prometheus+Grafana
环境介绍 技术栈 springbootmybatis-plusmysqloracleactuatorPrometheusGrafana 软件 版本 mysql 8 IDEA IntelliJ IDEA 2022.2.1 JDK 1.8 Spring Boot 2.7.13 mybatis-plus 3.5.3.2 本地主机应用 192.168.1.9:8007 PrometheusGrafana安装在同一台主机 http://…...
基于Qt 多线程(继承 QObject 的线程)
继承 QThread 类是创建线程的一种方法,另一种就是继承QObject 类。继承 QObject 类更加灵活。它通过 QObject::moveToThread()方法,将一个 QObeject的类转移到一个线程里执行。恩,不理解的话,我们下面也画个图捋一下。 通过上面的图不难理解,首先我们写一个类继承 QObj…...
图论11-欧拉回路与欧拉路径+Hierholzer算法实现
文章目录 1 欧拉回路的概念2 欧拉回路的算法实现3 Hierholzer算法详解4 Hierholzer算法实现4.1 修改Graph,增加API4.2 Graph.java4.3 联通分量类4.4 欧拉回路类 1 欧拉回路的概念 2 欧拉回路的算法实现 private boolean hasEulerLoop(){CC cc new CC(G);if(cc.cou…...
(一)什么是Vite——vite介绍与使用
什么是Vite Vite(法语意为 "快速的",发音 /vit/,发音同 "veet")是一种新型前端构建工具,能够显著提升前端开发体验。 它主要由两部分组成: 一个开发服务器,它基于 原生 …...
直流电动机四象限运行控制变流器设计
摘 要 节能和效率是工业经济发展的主题,电机在各行各业都是主要的动力来源, 直流电机以其控制简单,效率高,功率密度大等优势脱颖而出。基于直流电动机四象限运行控制变流器应用广泛,比如电子设备、电机控制、工业等行…...
虹科示波器 | 汽车免拆检修 | 2021款广汽丰田威兰达PHEV车发动机故障灯异常点亮
一、故障现象 一辆2021款广汽丰田威兰达PHEV车,搭载A25D-FXS发动机和动力蓄电池系统(额定电压为355.2V,额定容量为45.0Ah),累计行驶里程约为1万km。车主反映,高速行驶时发动机突然抖动,且发动机…...
机器学习和深度学习领域的算法和模型
机器学习和深度学习领域有许多算法和模型,以下是一些常见的算法和模型: 线性回归(Linear Regression)逻辑回归(Logistic Regression)决策树(Decision Tree)随机森林(Ran…...
减轻关键基础设施网络安全风险的 3 种方法
物理安全和网络安全之间存在相当大的重叠,特别是在保护关键基础设施方面。防止基础设施被篡改需要在物理安全方面进行大量投资,但任何连接到互联网的设备都代表着更广泛网络的潜在攻击点。 缺乏足够保护的设备可能会给这些对手在网络中提供立足点&#…...
Redis的特性以及使用场景
分布式发展历程参考 陈佬 http://t.csdnimg.cn/yYtWK 介绍redis Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的在内存中存储数据的中间件,属于NoSQL的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密
在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
【Linux】自动化构建-Make/Makefile
前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具:make/makfile 1.背景 在一个工程中源文件不计其数,其按类型、功能、模块分别放在若干个目录中,mak…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
解析“道作为序位生成器”的核心原理
解析“道作为序位生成器”的核心原理 以下完整展开道函数的零点调控机制,重点解析"道作为序位生成器"的核心原理与实现框架: 一、道函数的零点调控机制 1. 道作为序位生成器 道在认知坐标系$(x_{\text{物}}, y_{\text{意}}, z_{\text{文}}…...
