如何从已导入Elasticsearch及Kibana Discover的数据生成样本数据集并在Logstash测试
从Elasticsearch/Kibana生成样本数据集并在Logstash测试
一、导出Elasticsearch历史数据作为样本
- 通过Elasticsearch的
_searchAPI批量抽取指定数量的样本数据,执行以下curl命令(替换你的ES地址和目标索引名):curl -X GET "http://your-es-host:9200/your-target-index/_search?pretty" -H "Content-Type: application/json" -d' { "size": 100, # 根据需求调整样本数量 "query": { "match_all": {} } }' > es_raw_sample.json - 若需要筛选特定时间范围或业务条件的样本,修改
query段即可,例如抽取近7天的数据:{ "size": 100, "query": { "range": { "@timestamp": { "gte": "now-7d/d", "lte": "now/d" } } } } - 处理导出的数据为Logstash兼容的单行JSON格式:
使用jq工具提取核心数据字段并格式化:cat es_raw_sample.json | jq -c '.hits.hits[]._source' > es_cleaned_sample.json
二、抓取Kibana Discover的实时流入数据样本
- 方法1:直接从Discover界面导出
- 打开Kibana Discover,设置目标时间范围(如最近15分钟)和筛选条件
- 点击右上角「导出」按钮,选择JSON格式下载,再用上述
jq命令处理为单行JSON
- 方法2:实时捕获写入ES的数据
用curl持续查询最近1分钟内的新数据,生成实时样本:
同样用curl -X GET "http://your-es-host:9200/your-target-index/_search?pretty&scroll=1m" -H "Content-Type: application/json" -d' { "size": 50, "query": { "range": { "@timestamp": { "gte": "now-1m" } } } }' > realtime_raw_sample.jsonjq处理为单行JSON格式:cat realtime_raw_sample.json | jq -c '.hits.hits[]._source' > realtime_cleaned_sample.json
三、在Logstash中测试样本数据集
- 编写Logstash测试配置文件(示例:
sample_test.conf):input { file { path => "/absolute/path/to/es_cleaned_sample.json" # 替换为你的样本文件路径 start_position => "beginning" sincedb_path => "/dev/null" # 强制每次启动都重新读取样本 codec => "json" } } filter { # 这里替换为你的实际过滤逻辑,比如字段处理、Grok解析等 mutate { rename => { "old_field_name" => "new_field_name" } add_tag => ["sample_test"] } } output { stdout { codec => rubydebug # 在控制台输出处理后的结果,方便验证 } # 可选:输出到测试索引验证最终效果 # elasticsearch { # hosts => ["http://your-es-host:9200"] # index => "logstash_sample_test" # } } - 启动Logstash运行测试:
# 进入Logstash安装目录执行 bin/logstash -f sample_test.conf - 验证结果:
- 查看控制台输出的
rubydebug内容,确认过滤逻辑是否按预期执行 - 若配置了ES输出,可在Kibana中查看
logstash_sample_test索引的数据是否符合要求
- 查看控制台输出的
内容的提问来源于stack exchange,提问作者Christina
相关产品推荐
相关产品推荐

