Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

栏目: IT技术 · 发布时间: 5年前

内容简介:Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

Docker容器中运行ES,Kibana,Cerebro和Logstash安装与数据导入ES

想加强ES有关的知识,看了阮一鸣老师讲的《Elasticsearch核心技术与实战》收获很大,所以接下来会跟着他来更加深入的学习ES。

这篇博客的目的就是部署好ES和跟ES相关的辅助工具,同时通过Logstash将测试数据导入ES,这些工作完成之后,之后我们就可以在此基础上深入的去学习它。

一、 Docker 容器中运行ES,Kibana,Cerebro

1、所需环境

Docker + docker-compose

首先环境要部署好 Dockerdocker-compose

检验是否成功

命令 docker —version

xubdeMacBook-Pro:~ xub$ docker --version
Docker version 17.03.1-ce-rc1, build 3476dbf

命令 docker-compose —version

xubdeMacBook-Pro:~ xub$ docker-compose --version
docker-compose version 1.11.2, build dfed245

2、docker-compose.yml

我们可以简单把docker-compose.yml理解成一个类似 Shell 的脚本,这个脚本定义了运行多个容器应用程序的信息。

version: '2.2'
services:
  cerebro:
    image: lmenezes/cerebro:0.8.3
    container_name: cerebro
    ports:
      - "9000:9000"
    command:
      - -Dhosts.0.host=http://elasticsearch:9200
    networks:
      - es7net
  kibana:
    image: docker.elastic.co/kibana/kibana:7.1.0
    container_name: kibana7
    environment:
      - I18N_LOCALE=zh-CN
      - XPACK_GRAPH_ENABLED=true
      - TIMELION_ENABLED=true
      - XPACK_MONITORING_COLLECTION_ENABLED="true"
    ports:
      - "5601:5601"
    networks:
      - es7net
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_01
    environment:
      - cluster.name=xiaoxiao
      - node.name=es7_01
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data1:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - es7net
  elasticsearch2:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.1.0
    container_name: es7_02
    environment:
      - cluster.name=xiaoxiao
      - node.name=es7_02
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - discovery.seed_hosts=es7_01,es7_02
      - cluster.initial_master_nodes=es7_01,es7_02
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - es7data2:/usr/share/elasticsearch/data
    networks:
      - es7net

volumes:
  es7data1:
    driver: local
  es7data2:
    driver: local

networks:
  es7net:
    driver: bridge

启动命令

docker-compose up      #启动
docker-compose down    #停止容器
docker-compose down -v #停止容器并且移除数据

3、查看是否成功

es访问地址

localhost:9200  #ES默认端口为9200

Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

kibana访问地址

localhost:5601 #kibana默认端口5601

Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

cerebro访问地址

localhost:9000 #cerebro默认端口9000

Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

整体这样就安装成功了。

说明 项目是在Mac系统部署成功的,尝试在自己的阿里云服务进行部署但是因为内存太小始终无法成功。


二、 Logstash安装与数据导入ES

注意 Logstash和kibana下载的版本要和你的elasticsearch的版本号一一致。

1、配置movices.yml

这个名称是完全任意的

# input代表读取数据 这里读取数据的位置在data文件夹下,文件名称为movies.csv
input {
  file {
    path => "/Users/xub/opt/logstash-7.1.0/data/movies.csv"
    start_position => "beginning"
    sincedb_path => "/dev/null"
  }
}
filter {
  csv {
    separator => ","
    columns => ["id","content","genre"]
  }

  mutate {
    split => { "genre" => "|" }
    remove_field => ["path", "host","@timestamp","message"]
  }

  mutate {

    split => ["content", "("]
    add_field => { "title" => "%{[content][0]}"}
    add_field => { "year" => "%{[content][1]}"}
  }

  mutate {
    convert => {
      "year" => "integer"
    }
    strip => ["title"]
    remove_field => ["path", "host","@timestamp","message","content"]
  }

}
# 输入位置 这里输入数据到本地es ,并且索引名称为movies
output {
   elasticsearch {
     hosts => "http://localhost:9200"
     index => "movies"
     document_id => "%{id}"
   }
  stdout {}
}

启动命令 : 启动命令会和配置文件movices.yml的摆放位置有关,进入bin目录

./logstash ../movices.yml 

movices.yml存放的位置

Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

启动成功

Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro

这个时候你去cerebro可视化界面可以看到,已经有名称为movies的索引存在的,上面的图片其实已经存在movies索引了,因为我是Logstash数据导入ES成功才截的图。

总结总的来说这里还是简单的,之前通过Logstash将 Mysql 数据数据迁移到es会相对复杂点,毕竟它还需要一个数据库驱动包。

这样环境就已经搭建成功了,接下来的学习都在这个的基础上进行演示。


感谢

Elasticsearch核心技术与实战---阮一鸣(eBay Pronto平台技术负责人)

课程相关资料地址 :Github地址



 我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(8)



以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

标签: elasticsearch

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

How to Build a Billion Dollar App

How to Build a Billion Dollar App

George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95

Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试