项目作者: AoleiC

项目描述 :
私有定制的docker,上传至dockerhub。
高级语言: Dockerfile
项目地址: git://github.com/AoleiC/docker.git
创建时间: 2018-09-15T07:24:45Z
项目社区:https://github.com/AoleiC/docker

开源协议:

下载


elasticsearch

主要解决国内拉取官方镜像太慢超时的问题,版本与阿里云产品使用的版本一致。https://hub.docker.com/r/aoleic

  • elasticsearch-5.5.3 单纯的5.5.3版本。
  • elasticsearch-5.5.3-ik 包含中文ik分词插件的5.5.3版本。
  • kibana-5.5.3 单纯的5.5.3版本,账号密码默认为 elastic \ changeme

  • docker-compose 使用 :

  1. version: '2'
  2. services:
  3. elasticsearch:
  4. image: aoleic/elasticsearch:5.5.3-ik
  5. restart: always
  6. hostname: myesdb
  7. environment:
  8. - discovery.type=single-node
  9. - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  10. volumes:
  11. - /data/volumes/myesdb:/usr/share/elasticsearch/data:rw
  12. ulimits:
  13. memlock:
  14. soft: -1
  15. hard: -1
  16. mem_limit: 1g
  17. networks:
  18. my_net:
  19. aliases:
  20. - myesdb
  21. ports:
  22. - "9200:9200"
  23. - "9300:9300"
  24. kibana:
  25. image: aoleic/kibana:5.5.3
  26. restart: always
  27. hostname: mykibana
  28. environment:
  29. ELASTICSEARCH_URL: http://myesdb:9200
  30. ports:
  31. - "5601:5601"
  32. networks:
  33. my_net:
  34. aliases:
  35. - mykibana
  36. networks:
  37. my_net:
  38. external: true
  • 报错 没有创建node的权限:
    java.lang.IllegalStateException: Failed to create node environment
    java.nio.file.AccessDeniedException: /usr/share/elasticsearch/data/nodes
    则执行 chmod 777 /data/volumes/myesdb/ 获取读写权限

Transporter介绍

GitHub: https://github.com/compose/transporter

transporter 是使用golang语言开发的一款简单而又强大的数据迁移工具。它通过一种的agnostic message format数据形式轻松的将不同数据来源不同格式的数据进行转换。 transporter和mongo-connector都是监听oplog的变化来实现数据的实时同步。

transporter 可以在不同数据库之间进行数据转换迁移,同时也可以将text文件迁移至其他数据库。transporter连接不同数据源的媒介称为Adaptor. Adaptor可以配置为读数据的Source端也可以配置为作为写目标的Sink端。典型的Transporter包含一个Source和一个Sink,通过数据管道pipeline进行转换传输。transporter包含一系列本地或者JavaScript函数形式的转换器(Transformers),通过转换器可以将源数据格式进行过滤、转换以便正确的写入Sink目标数据源。

核心文件:

  • transporter

golang编译的二进制文件,下载来源:https://github.com/compose/transporter/releases 的 transporter-0.5.2-linux-amd64

  • pipeline.js

使用transporter init mongodb elasticsearch 命令初始化生成的文件,用于管道配置

  1. var source = mongodb({
  2. "uri": "${MONGODB_URI}",
  3. "timeout": "30s",
  4. // "tail": false,
  5. //"ssl": true
  6. // "cacerts": ["/path/to/cert.pem"],
  7. // "wc": 1,
  8. //"fsync": true,
  9. //"bulk": true,
  10. //"collection_filters": "{\"line_id\":{\"$gt\":0}}",
  11. // "read_preference": "Primary"
  12. })
  13. var sink = elasticsearch({
  14. "uri": "${ELASTICSEARCH_URI}",
  15. "timeout": "10s" // defaults to 30s
  16. // "aws_access_key": "ABCDEF", // used for signing requests to AWS Elasticsearch service
  17. // "aws_access_secret": "ABCDEF" // used for signing requests to AWS Elasticsearch service
  18. // "parent_id": "elastic_parent" // defaults to "elastic_parent" parent identifier for Elasticsearch
  19. })
  20. t.Source("source", source, "/^${ES_TYPE}$/").Transform(goja({"filename":"./dataRebuild.js"})).Transform(pick({"fields": ["_id","id","mongo_id","title"]})).Save("sink", sink, "/^${ES_TYPE}$/")
  21. //source的MongoDB collection 名要和 elasticsearch索引的type名称一样
  22. //goja重新处理数据
  23. //pick选择要传输的字段
  24. // /^${ES_TYPE}$/ 为正则精确匹配,如果只填入${ES_TYPE},会做模糊匹配
  • dataRebuild.js

手动添加的文件,用于做数据重组或者格式化

  1. function transform(doc) {
  2. doc.data["mongo_id"] = doc.data._id['$oid'];
  3. doc.data["id"] = doc.data["_id"];
  4. return doc;
  5. }
  • startup.sh

手动创建的传输执行脚本,用于一键初始化导入或容器启动后自动执行

  • docker-compose

配置相应的 数据库Host、账号、密码、库名、集合,账号密码没有则留空

  1. transporter:
  2. image: registry.cn-beijing.aliyuncs.com/yoc/rch-es-transport-master
  3. hostname: rchestransporter
  4. environment:
  5. MG_HOST: 'localhost:27017'
  6. MG_USER_NAME:
  7. MG_USER_PWD:
  8. ES_HOST: 'localhost:9200'
  9. ES_USER_NAME: elastic
  10. ES_USER_PWD: changeme
  11. INDEX_NAME: news
  12. TYPE_NAME: hot