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的一种。它可以用作数据库、缓存/会话存储以及消息队列。 作为一种内存数…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...

Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)
推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...