Elasticsearch 8.X 如何生成 TB 级的测试数据 ?

这篇具有很好参考价值的文章主要介绍了Elasticsearch 8.X 如何生成 TB 级的测试数据 ?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、实战问题

  • 我只想插入大量的测试数据,不是想测试性能,有没有自动办法生成TB级别的测试数据?

  • 有工具?还是说有测试数据集之类的东西?

    ——问题来源于 Elasticsearch 中文社区

    https://elasticsearch.cn/question/13129

2、问题解析

其实类似的问题之前在社群也经常被问到。实战业务场景中在没有大规模数据之前,可能会构造生成一些模拟数据,以实现性能测试等用途。

真实业务场景一般不愁数据的,包含但不限于:

  • 生成数据

  • 业务系统产生数据

  • 互联网、设备等采集生成的数据

  • 其他产生数据的场景.....

回归问题,Elasticsearch 8.X 如何构造呢?

社群达人死敌wen大佬给出的方案:两个 sample data的index来回reindex,一次操作数据量翻倍。

实际,死敌 wen 大佬指的是如下三部分的样例数据。

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

那么有没有其他的解决方案呢?本文给出两种方案。

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

3、方案一、elasticsearch-faker 构造数据

3.0 elasticsearch-faker 工具介绍

elasticsearch-faker 是一个用于为 Elasticsearch 生成虚假数据的命令行工具。

它通过模板来定义将要生成的数据结构,并在模板中使用占位符来表示动态内容,比如随机用户名、数字、日期等。

这些占位符将由 Faker 库提供的随机生成数据填充。执行时,该工具会根据指定的模板生成文档,并将它们上传到 Elasticsearch 索引中,用于测试和开发,以检验 Elasticsearch 查询和聚合的功能。

3.1 第一步:安装工具集

https://github.com/thombashi/elasticsearch-faker#installation

pip install elasticsearch-faker
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

3.2 第二步:制作启动脚本 es_gen.sh

#!/bin/bash

# 设置环境变量
export ES_BASIC_AUTH_USER='elastic'
export ES_BASIC_AUTH_PASSWORD='psdXXXXX'
export ES_SSL_ASSERT_FINGERPRINT='XXddb83f3bc4f9bb763583d2b3XXX0401507fdfb2103e1d5d490b9e31a7f03XX'

# 调用 elasticsearch-faker 命令生成数据
elasticsearch-faker --verify-certs generate --doc-template doc_template.jinja2 https://172.121.10.114:9200 -n 1000

同时,编辑模版文件 doc_template.jinja2。

模版如下所示:

{
  "name": "{{ user_name }}",
  "userId": {{ random_number }},
  "createdAt": "{{ date_time }}",
  "body": "{{ text }}",
  "ext": "{{ word }}",
  "blobId": "{{ uuid4 }}"
}

3.3 第三步:执行脚本 es_gen.sh

[root@VM-0-14-centos elasticsearch-faker]# ./es_gen.sh 
document generator #0: 100%|███████████████████████████████████████████████████████████████████████████████████████████| 1000/1000 [00:00<00:00, 1194.47docs/s]
[INFO] generate 1000 docs to test_index

[Results]
target index: test_index
completed in 10.6 secs
current store.size: 0.8 MB
current docs.count: 1,000
generated store.size: 0.8 MB
average size[byte]/doc: 831
generated docs.count: 1,000
generated docs/secs: 94.5
bulk size: 200
Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

3.4 第4步:查看导入数据结果, kibana 查看。

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索
"hits": [
      {
        "_index": "test_index",
        "_id": "2ff2971b-bc51-44e6-bbf7-9881050d5b78-0",
        "_score": 1,
        "_source": {
          "name": "smithlauren",
          "userId": 207,
          "createdAt": "1982-06-14T03:47:00.000+0000",
          "body": "Risk cup tax. Against growth possible something international our themselves. Pm owner card sell responsibility oil.",
          "ext": "mean",
          "blobId": "c4f5c8dc-3d97-44ee-93da-2d93be676b8b"
        }
      },
      {

4、使用 Logstash  generator 插件生成随机样例数据

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

4.1 准备环境

确保你的环境中已经安装了 Elasticsearch 8.X 和 Logstash 8.X。Elasticsearch 应该配置正确,并且运行在 HTTPS 上。

另外,确保 Elasticsearch 的相关证书已经正确配置在 Logstash 中。

4.2 生成样例数据

我们将使用 Logstash 的 generator 输入插件来创建数据,并使用 ruby 过滤器插件来生成 UUID 和随机字符串。

4.3 Logstash 配置

创建一个名为 logstash-random-data.conf 的配置文件,并填入以下内容:

input {
  generator {
    lines => [
      '{"regist_id": "UUID", "company_name": "RANDOM_COMPANY", "regist_id_new": "RANDOM_NEW"}'
    ]
    count => 10
    codec => "json"
  }
}

filter {
  ruby {
    code => '
      require "securerandom"
      event.set("regist_id", SecureRandom.uuid)
      event.set("company_name", "COMPANY_" + SecureRandom.hex(10))
      event.set("regist_id_new", SecureRandom.hex(10))
    '
  }
}

output {
 elasticsearch {
    hosts => ["https://172.121.110.114:9200"]
    index => "my_log_index"
    user => "elastic"
    password => "XXXX"
    ccacert => "/www/elasticsearch_0810/elasticsearch-8.10.2/config/certs/http_ca.crt"
  }
  stdout { codec => rubydebug }
}

4.4 分析配置文件

  • 1.Input

  • a.generator 插件用于生成事件流。

  • b.lines 包含一个 JSON 字符串模板,它定义了每个事件的结构。

  • c.count 指定了要生成的文档数量。

  • d.codec 设置为 json 以告诉 Logstash 期望的输入格式。

  • 2.Filter

  • a.ruby 过滤器用于执行 Ruby 代码。

  • b.代码片段内生成了一个 UUID 作为 regist_id。

  • c.company_name 和 regist_id_new 使用随机十六进制字符串填充。

  • 3.Output

  • a.指定 Elasticsearch 的主机、索引、用户认证信息及证书。

  • b.stdout 输出用于调试,它会输出 Logstash 处理后的事件。

4.5 运行 Logstash

将配置文件保存后,在终端运行以下命令以启动 Logstash 并生成数据:

$ bin/logstash -f logstash-random-data.conf

执行结果如下:

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

kibana 查看数据结果如下:

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

借助 Logstash,我们可以轻松生成大量的随机样例数据,用于 Elasticsearch 的测试和开发。这种方法不仅高效,而且可以灵活地根据需求生成各种格式的数据。

5、小结

上述的验证都是使用 Elasticsearch 8.10.2 版本验证通过的。

其实除了文章给出的两种方案外,还有很多其他的方案,比如:esrally 生成测试数据、借助 Python 的 Faker 实现样例数据构造,Common Crawl、Kaggle 等网站提供大型的公共数据集,可以作为测试数据的来源。

大家有没有遇到类似问题,是如何实现的?欢迎留言交流。

推荐阅读

  • 全网首发!从 0 到 1 Elasticsearch 8.X 通关视频

  • 重磅 | 死磕 Elasticsearch 8.X 方法论认知清单

  • 如何系统的学习 Elasticsearch ?

  • 那些 ChatGPT4 也搞不定的 Elasticsearch 问题,请抛给我们!

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

更短时间更快习得更多干货!

中国50%+Elastic认证专家出自于此!

Elasticsearch 8.X 如何生成 TB 级的测试数据 ?,elasticsearch,jenkins,大数据,搜索引擎,全文检索

比同事抢先一步学习进阶干货!文章来源地址https://www.toymoban.com/news/detail-745056.html

到了这里,关于Elasticsearch 8.X 如何生成 TB 级的测试数据 ?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch:如何从 Elasticsearch 集群中删除数据节点

    Elasticsearch 集群通常包含多个节点,并且可能存在需要从集群中删除节点的情况。 应谨慎执行此过程,以确保数据的完整性和可用性。 在本文中,我们将引导你完成从 Elasticsearch 集群安全删除节点的步骤。 在尝试从 Elasticsearch 集群中删除节点之前,确保集群处于健康状态(

    2024年02月07日
    浏览(31)
  • Elasticsearch:如何在 Elasticsearch 中存储复杂的关系数据

    在传统的数据库中,对数据关系的描述无外乎三种:一对一、一对多和多对多关系。 如果有关系相关的数据,我们一般在建表的时候加上主外键。 建立数据链接,然后在查询或者统计中通过 join 恢复或者补全数据,最后得到我们需要的结果数据,然后转换到 Elasticsearch中,如

    2024年02月05日
    浏览(64)
  • canal实时同步mysql数据到elasticsearch(部署,配置,测试)(一)

    canal基于MySQL数据库增量日志解析,提供增量数据订阅和消费,是阿里开源CDC工具,它可以获取MySQL binlog数据并解析,然后将数据变动传输给下游。基于canal,可以实现从MySQL到其他数据库的实时同步 MySQL主备复制原理 MySQL master 将数据变更写入二进制日志( binary log, 其中记录叫

    2023年04月08日
    浏览(22)
  • elasticsearch 如何清理过期的数据

    使用elasticsearch收集日志进行处理,时间久了,很老的数据就没用了并且占用很大的磁盘,这个时候就要对过期数据进行清理 删除elasticsearch数据分为两种:一种是删除索引(数据和表结构同时删除,作用同sql server 中 drop table \\\"表格名\\\"),另一种是删除数据(不删除表结构,作

    2024年02月11日
    浏览(19)
  • Easysearch 跨版本兼容性测试,还原 Elasticsearch 各版本快照数据

    本文主要测试验证 Elasticsearch 各版本快照在 Easysearch 中进行数据恢复。 ignore_unavailable:如果 indices 列表中的索引不存在,则是否忽略该索引而不是使快照失败。默认值为 false 。 include_global_state:是否在快照中包含集群状态(包括索引模版、生命周期配置、持久化配置等)。

    2024年02月09日
    浏览(21)
  • Elasticsearch:数据是如何被写入的?

    在我之前的文章 “Elasticsearch:索引数据是如何完成的”,我详述了如何索引 Elasticsearch 的数据的。在今天的文章中,我将从另外一个视角来诠释如何写入数据到 Elasticsearch。更多关于 Elasticsearch 数据操作,请阅读文章 “Elasticsearch:彻底理解 Elasticsearch 数据操作”。 发送写请

    2024年02月08日
    浏览(22)
  • 如何使用ElasticSearch存储和查询数据

    1. 引言 在大多数的场景里,存储数据都是用MySQL这类关系型数据库,这类数据库的特点是数据存储安全性和一致性高,可以用于事务操作,但是随着数据量的增加,查询的速度也会随之降低,并且其扩展能力有限,因此在日志记录和查询等场景下,MySQL就显得力不从心,为了

    2024年02月14日
    浏览(22)
  • 如何使用 Elasticsearch 作为向量数据库

    在今天的文章中,我们将很快地通过 Docker 来快速地设置 Elasticsearch 及 Kibana,并设置 Elasticsearch 为向量搜索。 在上面,我们指定了 elasic 超级用户的密码为 password。这在下面将要使用到。 验证容器是否已启动并正在运行: 从上面我们可以看到 Elasticsarch 及 Kibana 已经完全运行

    2024年04月17日
    浏览(35)
  • 安装Logstash并导入Movielens测试数据集(基于elasticsearch-8.5.2版本)

    组件 安装包 下载地址 Logstash logstash-8.5.2-linux-x86_64.tar.gz elastic官网:https://www.elastic.co/cn/downloads/past-releases#logstash elastic中文社区:https://elasticsearch.cn/download/ MovieLens 测试数据集 ml-latest-small.zip https://grouplens.org/datasets/movielens/ 自定义部署标准 标准描述 es elasticsearch不允许使用

    2024年02月15日
    浏览(23)
  • ElasticSearch创建后的索引如何修改数据类型

    一、前言 在 Elasticsearch 中,一旦创建索引,就不能更改现有字段的数据类型。如果您需要更改数据类型,则需要重新创建索引并使用新的数据类型。以下针对各种业务场景总结几种修改方法。 二、【方法一】删除重建 这种方式的使用场景为当前索引库数据量不大,而且可

    2024年02月13日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包