ElasticSearch入门


一、ElasticSearch认识

1、什么是ElasticSearch?

  • 基于Apache Lucene构建的开源搜索引擎
  • 采用Java编写,提供简单易用的RESTFul API
  • 轻松的横向扩展,可支持PB级的结构化或非结构化数据处理

2、可用应用场景

  • 海量数据分析引擎
  • 站内搜索引擎
  • 数据仓库

3、一线公司实际应用场景

  • 英国卫报-实时分析公众对文章的回应
  • 维基百科、 GitHub -站内实时搜索
  • 百度-实时日志监控平台

二、elasticsearch安装

单实例安装

1、下载

下载链接:https://www.elastic.co/downloads/past-releases/elasticsearch-5-5-2

下载
2、运行

cyh@chenyonuandembp bin % sh elasticsearch

运行界面
3、在浏览器打开127.0.0.1:9200:
浏览器界面

插件Head安装

1、下载

下载链接:Github下载地址:elasticsearch-head

2、安装运行

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start

3、在本地下载的elasticsearch中进行配置

cyh@chenyonuandembp elasticsearch-5.5.2 % vim config/elasticsearch.yml

http.cors.enabled: true
http.cors.allow-origin: "*"

4、把本地的elasticsearch和elasticsearch-head都启动

elasticsearch: sh elasticsearch-5.5.2/bin/elasticsearch

elasticsearch-head: npm run start

运行界面
5、http://localhost:9100浏览器运行

浏览器界面

分布式安装

1、主节点配置

cyh@chenyonuandembp elasticsearch-5.5.2 % vim config/elasticsearch.yml主节点中配置:

cluster.name: cyh
node.name: master
node.master: true
network.host: 127.0.0.1

2、分别启动服务运行并浏览(同上)

3、分布式安装

复制两份elasticsearch-5.5.2在两个文件夹中,做分布式安装:

cyh@chenyonuandembp software % cp -r elasticsearch-5.5.2 es_slave1
cyh@chenyonuandembp software % cp -r elasticsearch-5.5.2 es_slave2

4、字节点配置

在子节点上配置cyh@chenyonuandembp es_slave1 % vim config/elasticsearch.yml

# 集群名称
cluster.name: cyh
# 节点名称
node.name: slave1
network.host: 127.0.0.1
# 防止与主节点端口号9200冲突,自己设定一个
http.port: 8200
# 避免子节点是游离状态,此配置帮助子节点找到主节点
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

在子节点上配置cyh@chenyonuandembp es_slave2 % vim config/elasticsearch.yml

cluster.name: cyh
node.name: slave2
network.host: 127.0.0.1
http.port: 8000
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]

5、浏览器运行

多节点分布式效果图

遇到的问题

在分布式安装子节点时遇到的问题:

failed to join {master}{省略配置信息输出}
# 主要是下面的错误信息
org.elasticsearch.transport.RemoteTransportException: [master][IP:9300][internal:cluster/coordination/join]
Caused by: java.lang.IllegalArgumentException: can't add node {slave1}{省略配置信息} with the same id but is a different node instance

因为在复制 Elasticsearch 到 slave1 / slave2时,将ES目录 elasticsearch-5.5.2 下的 data 目录一起复制过去了,这里再启动slave1时,data目录下的文件冲突,所以报错了。

解决方案:

删掉报错的 es 目录下的 data 目录,重新启动ES


评论
评论
  目录