#elasticsearch #backup #import #logging #elastic #cli-tool

app limber

一个简单(但快速)的Elasticsearch文档备份工具

5个稳定版本

1.1.1 2022年6月15日
1.1.0 2022年4月5日
1.0.2 2019年7月22日
1.0.1 2019年6月7日
1.0.0 2019年5月24日

解析器实现中排名1259

每月下载量25

MIT 许可证

24KB
292

Limber

Build Status Crates.io

一个简单(但快速)的Elasticsearch文档备份工具。

Limber提供了一个非常简洁的界面来从Elasticsearch集群导出和导入文档。虽然其他工具也存在这种用途,但它们运行较慢,因此不适合在大型集群中使用。该工具旨在尽可能轻量级和快速(考虑到它是一个命令行工具)。使用方式旨在与Unix风格的管道相匹配,以便直接将输出重定向到其他集群或您的压缩算法等。

功能集故意较小,因为其他工具针对的是那些对速度而不是糖(功能)感兴趣的人。如果您希望请求新功能,请提交一个问题,我们可以讨论其包含。

安装

Limber将通过Crates.io提供,因此您可以直接使用cargo安装它。

$ cargo install limber

当我更熟悉交叉编译时,我将尝试将预构建的二进制文件附加到仓库中,以便让Rust生态系统之外的人更容易使用。

用法

本节将(非常简略地)介绍Limber提供的最相关的命令。如果您想了解最新的用法,请检查您终端会话中通过limber -h生成的帮助菜单。

导出文档

要从Elasticsearch集群导出文档,您可以使用export子命令。其模式如下所示

$ limber export <source>

source参数是必需的,通常包含您要从中导出的Elasticsearch集群的URL。假定集群可以从运行此工具的机器上访问。如果您想从特定的索引导出,您还可以在URL中包含它,形式如下

https://127.0.0.1:9200/my_index
https://127.0.0.1:9200/my_first_index,my_second_index

导出的文档将直接输出到stdout,并将进度报告到stderr。这允许您以流式传输的方式将结果重定向到您想要的任何目的地。因此,export命令的调用通常如下所示

$ limber export https://127.0.0.1:9200 | gzip -9 > export.jsonl.gz

上述命令将所有导出的数据压缩成 export.jsonl.gz 文件,同时在终端会话中偶尔报告进度(只要你没有同时重定向 stderr)。

有几个选项可以用来自定义导出,例如并发因子、批量大小、文档过滤等。所有这些选项都可以通过 limber export -h 查找。

导入文档

导入文档的过程与导出非常相似,只是方向相反。就像 export 命令一样,它遵循以下模式

$ limber import <target>

target 参数是必需的,它和 source 参数一样工作,用于控制将文档放置到哪个索引中。如果您没有提供索引,文档将被放置到与导出时相同的索引名称中。显然,当索引文档时,使用多个索引名称就不再有意义。

与导出类似,导入的文档从 stdin 读取,以便您可以从一个位置流式传输到另一个位置。以下是一个导入之前示例中导出的文档的例子

$ gzcat export.jsonl.gz | limber import https://127.0.0.1:9200

您可能会注意到,API 允许您将一个集群或索引直接管道到另一个。以下是一个例子

$ limber export https://127.0.0.1:9200/my_first_index | \
    limber import https://127.0.0.1:9200/my_second_index

导入命令也允许自定义并发因子和批量大小。有关所有可用选项,请参阅 limber import -h

依赖关系

~11-26MB
~394K SLoC