13.6 Elasticsearch

Elasticsearch是一个基于Lucene的开源搜索服务器,主要基于Java实现。它提供了一个分布式的,多租户的全文搜索引擎,内含RESTful web接口。

13.6 Elasticsearch - 图1

Elasticsearch提供了实时的分布式数据存储和分析查询功能,很容易扩展到上百台服务器,支持处理PB级结构化或非结构化数据。配合Logstash、Kibana等组件,可以快速构建一套对日志消息的分析平台。

可以使用官方镜像,快速运行Elasticsearch容器:


  1. $ docker run -d elasticsearch
  2. 937c1cb21b39a322ab6c5697e31af22a5329f08408d40f64e27465fed6597e34

也可以在启动时传入一些额外的配置参数:


  1. $ docker run -d elasticsearch elasticsearch -Des.node.name="TestNode"
  2. 2c0ae96f73ca01779c60f7c6103481696c34c510266f5c503610a2640dc6f50a

目前使用的镜像内含默认配置文件,包含了预先定义好的默认配置。如果用户要使用自定义配置,可以使用数据卷,挂载自定义配置文件至/usr/share/elasticsearch/config:


  1. $ docker run -d -v "$PWD/config":/usr/share/elasticsearch/config elasticsearch
  2. 43333bfdbbfe156512ba9786577ca807c676f9a767353222c106453020ac7020

如果需要数据持久化,可以使用数据卷指令,挂载至/usr/share/elasticsearch/data:


  1. $ docker run -d -v "$PWD/esdata":/usr/share/elasticsearch/data elasticsearch
  2. 3feddf6a8454534b209b32df06c2d65022d772a8f511593371218f6bd064e80e

此镜像会暴露9200 9300两个默认的HTTP端口,可以通过此端口进行服务访问。9200端口是对外提供服务的API使用的端口。9300端口是内部通信端口,这些通信包括心跳,集群内部信息同步。