一、前言
什么是 Elasticsearch ?
Elasticsearch 是一个基于 Apache Lucene(TM) 的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库,并通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。
Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它:
分布式的实时文件存储,每个字段都被索引并可被搜索;
分布式的实时分析搜索引擎;
可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据。
Elasticsearch 三大要素:
文档(Document):在面向对象观念就是一个对象。在 ES 里面,是一个大 JSON 对象,是指定了唯一 ID 的最底层或者根对象。文档的位置由 _index、_type 和 _id 唯一标识。
索引(Index):用于区分文档成组,即分到一组的文档集合。索引,用于存储文档和使文档可被搜索。比如项目存索引 project 里面,交易存索引 sales 等。
类型(Type):用于区分索引中的文档,即在索引中对数据逻辑分区。比如索引 project 的项目数据,根据项目类型 ui 项目、插画项目等进行区分。
二、ES 集群安装
基于 Dokcer ,单机安装 Docker 版集群。使用版本如下:
Elasticsearch 5.3.2
Kibana 5.3.2
JDK 8
安装步骤:
安装 ES 集群实例 elasticsearch001
安装 ES 集群实例 elasticsearch002
安装 Kibana 监控
1. 安装 ES 集群实例 elasticsearch001
打开命令行执行:
docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch001 -h elasticsearch001\
-e cluster.name=lookout-es -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -e xpack.security.enabled=false\
docker.elastic.co/elasticsearch/elasticsearch:5.3.2
命令浅析如下:
-d 设置后台运行容器。
-p [宿主机端口]:[容器内端口]。
--name 设置容器别名。
-h 设置容器的主机名。
-e 设置环境变量。这里关闭 x-pack 的安全校验功能,防止访问认证。
第一次运行会比较慢,因为拉取 es docker image,但是可以设置国内 Docker 镜像地址。如果成功,命令行会出现如图所示:
那么验证下是否启动成功,继续执行如下命令:
curl http://localhost:9200/_cat/health\?v
会出现如图所示的结果:
cluster.name ES 集群名为 lookout-es,这个后面需要指定关联。node 表示只有一个实例。默认 shards 分片为主备两个。status 状态是我们要关心的,状态可能是下列三个值之一: