0%

ElasticSearch(1)

ElasticSearch入门
笔记来自:http://www.imooc.com/video/15762

ElasticSearch简介

1、什么是ElasticSearch?

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

2、应用场景

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

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

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

4、前置知识

熟悉用Maven构建项目
了解Spiring Boot的基本使用

5、环境要求

IDE工具 IntelliJ IDEA、Eclipse等常规用IDE即可
Java JDK1.8
其他依赖 Maven、NodeJs(6.0以上)

6、课程简介

安装
基础概念
基本用法
高级查询
实战演练
课程总结

安装

1、版本问题

版本历史 1.x->2.x->5.x
版本选择 5.x

2、单实例安装
(1)官网下载elasticsearch

https://www.elastic.co/cn/

yujiang@ubuntu001:~$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.0.tar.gz

(2)解压并修改配置文件

yujiang@ubuntu001:~$ tar zxvf elasticsearch-5.6.0.tar.gz

yujiang@ubuntu001:~$ cd elasticsearch-5.6.0/

yujiang@ubuntu001:~/elasticsearch-5.6.0$ vi config/elasticsearch.yml
添加
network.host: 192.168.30.134

(3)启动elasticsearch

yujiang@ubuntu001:~$ sudo sysctl -w vm.max_map_count=262144
或
yujiang@ubuntu001:~$ sudo vi /etc/sysctl.conf
vm.max_map_count=262144

yujiang@ubuntu001:~/elasticsearch-5.6.0$ sh ./bin/elasticsearch

(4)打开浏览器

http://192.168.30.134:9200/

3、实用插件Head安装
(1)安装nodejs

yujiang@ubuntu001:~$ wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz
yujiang@ubuntu001:~$ xz -d node-v6.11.3-linux-x64.tar.xz 
yujiang@ubuntu001:~$ tar -xvf node-v6.11.3-linux-x64.tar 
yujiang@ubuntu001:~$ sudo ln -s /home/yujiang/node-v6.11.3-linux-x64/bin/node  /usr/bin/node 
yujiang@ubuntu001:~$ sudo ln -s /home/yujiang/node-v6.11.3-linux-x64/bin/npm  /usr/bin/npm 

(2)修改ElasticSearch配置文件,支持跨域,并在后台运行ElasticSearch

yujiang@ubuntu001:~/elasticsearch-5.6.0$ vi config/elasticsearch.yml
添加
http.cors.enabled: true
http.cors.allow-origin: "*"
yujiang@ubuntu001:~/elasticsearch-5.6.0$ sh ./bin/elasticsearch -d

(3)运行elasticsearch-head

https://github.com/mobz/elasticsearch-head
yujiang@ubuntu001:~$ wget https://github.com/mobz/elasticsearch-head/archive/master.zip
yujiang@ubuntu001:~$ unzip master.zip
yujiang@ubuntu001:~$ cd elasticsearch-head-master/
yujiang@ubuntu001:~/elasticsearch-head-master$ npm install
yujiang@ubuntu001:~/elasticsearch-head-master$ npm run start

(4)打开浏览器

http://192.168.30.134:9100/

web页面输入
http://192.168.30.134:9200/

4、分布式安装

(1)master节点修改配置文件

yujiang@ubuntu001:~/elasticsearch-5.6.0$ vi config/elasticsearch.yml
添加 
cluster.name: escluster
node.name: master
node.master: true

(2)slave节点修改配置文件

cluster.name: escluster
node.name: slave1
network.host: 192.168.30.135
#http.port: 8200
discovery.zen.ping.unicast.hosts: ["192.168.30.134"]
yujiang@ubuntu002:~/elasticsearch-5.6.0$ sh ./bin/elasticsearch

(3)安装java jdk

yujiang@ubuntu002:~$ sudo add-apt-repository ppa:openjdk-r/ppa
yujiang@ubuntu002:~$ sudo apt-get update 
yujiang@ubuntu002:~$ sudo apt-get install -f openjdk-8-jdk
yujiang@ubuntu002:~$ java -version
openjdk version "1.8.0_131"
OpenJDK Runtime Environment (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)
OpenJDK 64-Bit Server VM (build 25.131-b11, mixed mode)

ElasticSearch基础概念

集群和节点

master + slave1 + slave2 + slave...n

索引

含有相同属性的文档集合

类型

索引可以定义一个或多个类型,文档必须属于一个类型

文档

文档是可以被索引的基本数据单位

分片

每个索引都有多个分片,每个分片是一个Lucene索引
分片的好处,加入一个索引的数据量很大,就会造成硬盘压力很大,就会出现搜索瓶颈,可以将索引分成多个分片,从而分担压力,还允许用户进行水平的扩展和拆分,及分布式的操作,可以提高搜索和其他操作的效率

备份

拷贝一份分片就完成了分片的备份
当一个主分片失败或者出现问题时,备份分片可以代替工作,从而提高了es的可用性。备份的分片还可以执行搜索的操作,以分摊搜索的压力。es在创建索引时会创建5和分片和1个备份,数量可以修改,分片只有在创建索引的时候指定而不能在后期进行修改,备份是可以动态修改的

ElasticSearch的基本用法

RESTFul API

(1)API基本格式

http://<ip>:<port>/<索引>/<类型>/<文档id>

(2)常用HTTP动词

GET/PUT/POST/DELETE