帮酷LOGO
  • 显示原文与译文双语对照的内容
Parallel elasticsearch bulk indexing utility for the command line.

  • 源代码名称:esbulk
  • 源代码网址:http://www.github.com/miku/esbulk
  • esbulk源代码文档
  • esbulk源代码下载
  • Git URL:
    git://www.github.com/miku/esbulk.git
  • Git Clone代码到本地:
    git clone http://www.github.com/miku/esbulk
  • Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/miku/esbulk
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
  • esbulk

    面向elasticsearch的快速并行批量加载。 数据是从换行的JSON文件或者标准文件中读取的,并在批量和索引into到elasticsearch中,并在并行状态下进行处理。 最短的命令是:

    $ esbulk -index my-index-name < file.ldj

    警告:如果索引压力在bulk上 is ( 。数十或者数百个并行工作,大批量,取决于你的设置),esbulk会停止并报告错误:

    $ esbulk -index my-index-name -w 100 file.ldj
    2017/01/02 16:25:25 error during bulk operation, try less workers (lower -w value) or
     increase thread_pool.bulk.queue_size in your nodes

    请注意,在这种情况下,有些文档被索引,有些文档未被索引。 索引将处于不一致状态,因为索引过程周围没有事务括号。

    但是,在单个 node 设置上使用默认( 。parallism: 内核数) 只是工作。 对于较大的集群,增加工人数量,直到看到完全的CPU利用率。 之后,更多的工人不会再购买更多的速度。

    安装

    $ go get github.com/miku/esbulk/cmd/esbulk

    对于 deb 或者 rpm 软件包,请参阅: https://github.com/miku/esbulk/releases

    用法

    $ esbulk -h
    Usage of esbulk -index NAME [OPTIONS] FILE:
     -cpuprofile string
     write cpu profile to file
     -host string
     elasticsearch host (default"localhost")
     -id string
     name of field to use as id field, by default ids are autogenerated
     -index string
     index name
     -mapping string
     mapping string or filename to apply before indexing
     -memprofile string
     write heap profile to file
     -port int
     elasticsearch port (default 9200)
     -purge
     purge any existing index before indexing
     -server string
     elasticsearch server, this works with https as well (default"http://localhost:9200")
     -size int
     bulk batch size (default 1000)
     -type string
     elasticsearch doc type (default"default")
     -u string
     http basic auth username:password, like curl -u
     -v prints current program version
     -verbose
     output basic progress
     -w int
     number of workers to use (default 4)
     -z unzip gz'd file on the fly

    要索引一个JSON文件,每行包含一个文档,只需运行:

    $ esbulk -index example file.ldj

    其中,file.ldj的行分隔 JSON,例如:

    {"name":"esbulk","version":"0.2.4"}
    {"name":"estab","version":"0.1.3"}
    ...

    默认情况下,esbulk 将使用多个并行工作者,因为有内核。 要调整索引过程,请调整 -size-w 参数。

    你还可以使用 -z 标志,从压缩文件中索引:

    $ esbulk -z -index example file.ldj.gz

    从 0.3.7开始,设置非默认服务器hostport的首选方法是通过 -server 。e.g.

    $ esbulk -server https://0.0.0.0:9201

    通过这种方式,你也可以使用 https,这在以前是不可能。 选项 -host-port 保持向后兼容。

    重用 id

    自版本 0.3.8: 如果你想在elasticsearch中重用你的文档中的ID,可以通过 -id 标志指定ID字段:

    $ cat file.json
    {"x":"doc-1","db":"mysql"}
    {"x":"doc-2","db":"mongo"}

    在这里,我们想重用来自字段的ID 。

    $ esbulk -id x -index throwaway -verbose file.json
    ...
    $ curl -s http://localhost:9200/throwaway/_search | jq
    {
    "took": 2,
    "timed_out": false,
    "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
     },
    "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
     {
    "_index":"throwaway",
    "_type":"default",
    "_id":"doc-2",
    "_score": 1,
    "_source": {
    "x":"doc-2",
    "db":"mongo"
     }
     },
     {
    "_index":"throwaway",
    "_type":"default",
    "_id":"doc-1",
    "_score": 1,
    "_source": {
    "x":"doc-1",
    "db":"mysql"
     }
     }
     ]
     }
    }

    嵌套的标识字段

    版本 0.4.3添加了对嵌套标识字段的支持:

    $ cat fixtures/pr-8-1.json
    {"a": {"b": 1}}
    {"a": {"b": 2}}
    {"a": {"b": 3}}
    $ esbulk -index throwaway -id a.b <fixtures/pr-8-1.json
    ...

    连接标识

    版本 0.4.3添加对id的支持,这些支持是多个字段的串联:

    $ cat fixtures/pr-8-2.json
    {"a": {"b": 1},"c":"a"}
    {"a": {"b": 2},"c":"b"}
    {"a": {"b": 3},"c":"c"}
    $ esbulk -index throwaway -id a.b,c <fixtures/pr-8-1.json
    ...
     {
    "_index":"xxx",
    "_type":"default",
    "_id":"1a",
    "_score": 1,
    "_source": {
    "a": {
    "b": 1
     },
    "c":"a"
     }
     },

    使用x 包

    0.4.2: 支持安全elasticsearch节点:

    $ esbulk -u elastic:changeme -index myindex file.ldj

    已经为solr启动了一个类似的项目,称为 solrbulk

    贡献者

    测量

    $ csvlook -I measurements.csv| es | esbulk | docs | avg_doc_size_b | machines | cores | heap_gb | duration_s | doc_per_s || ----- | ------ | --------- | -------------- | -------- | ----- | ------- | ---------- | --------- || 6.1.2 | 0.4.8 | 138000000 | 2000 | 1 | 32 | 64 | 6420 | 22100 |

    为什么不添加一个




    Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语