一、认识ElasticSearch

Elasticsearch 是一个实时的分布式搜索分析引擎, 它能让你以一个之前从未有过的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。

摘自《Elasticsearch: 权威指南

Elasticsearch 使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API。

然而,Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎。 它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段 可以被索引与搜索
  • 一个分布式实时分析搜索引擎
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据

Elasticsearch 将所有的功能打包成一个单独的服务,这样你可以通过程序与它提供的简单的 RESTful API 进行通信, 可以使用自己喜欢的编程语言充当 web 客户端,甚至可以使用命令行(去充当这个客户端)。

二、环境依赖

因Elasticsearch 使用 Java 编写,故服务端需具备Java运行环境。

三、服务(集群)搭建

准备工作:

  • 官网下载最新版本程序:https://www.elastic.co/products/elasticsearch
  • 解压到服务端指定目录

重点需要关注两个文件:

  • ./bin/elasticsearch 服务启动程序
  • ./config/elasticsearch.yml 服务配置文件

1.运行单节点实例

单节点实例无需修改配置文件,直接启动即可。

./bin/elasticsearch #启动服务 (./bin/elasticsearch -d #后台运行服务)

在浏览器中访问http://localhost:9200/?pretty,看到此界面表明ES服务启动成功

2.搭建集群

如图所示,ElasticSearch集群由一个主节点多个从节点组成。

ElasticSearch集群搭建十分简单,每个节点都运行起来,且都有自己的配置信息。故每个节点都需要copy一份程序代码,修改各自配置文件信息并运行。

具体配置如下:

  • 主节点配置信息:
//跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
//集群配置
cluster.name: Jack-ElasticSearch
node.name: master
node.master: true
network.host: 127.0.0.1
  • 从节点配置信息
cluster.name: Jack-ElasticSearch
node.name: slave2

network.host: 127.0.0.1
http.port: 9202
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

3.运行各节点

参照运行单节点实例