Elasticsearch 简介
ElasticSearch
(简称 ES) 是一个基于 Lucene 构建的开源,分布式,RESTful 搜索引擎。
设计用于云计算中,能够达到搜索实时、稳定、可靠和快速,并且安装使用方便。
支持通过 HTTP 请求,使用 JSON 进行数据索引。另外,ES还有非常强大的统计功能 (facets) , 一个例子:现在系统中的需要实时处理的统计功能从 MySQL 转接到 ElasticSearch , 准确性一致, 速度从原来 1900ms -> 50ms。
Apache Lucene
只是一个库。
想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。
Elasticsearch
也使用Java开发并使用Lucene
作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
关系数据库与ES
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
Elasticsearch 安装
安装JDK
需要JDK1.7或以上,官方推荐使用最新版JDK安装与启动ES
下载ES1
https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.3/elasticsearch-2.3.3.tar.gz
解压到指定目录
1
tar -zxvf elasticsearch-2.3.3.tar.gz
进入
bin
目录启动ES1
2cd elasticsearch-2.3.3/bin
./elasticsearch至此,可以查看ES集群的信息
1
curl -XGET 'http://localhost:9200?pretty'
关闭ES
三种方式关闭:
如果节点是连接到控制台,按下Ctrl+C;
通过发送TERM信号杀掉服务器进程(参考Linux上的kill命令和Windows上的任务管理器);
使用REST API
1
2
3
4
5
6
7
8
9
10
11//关掉整个集群
curl -XPOST http://localhost:9200/_cluster/nodes/_shutdown
//关闭单一节点,假如节点标识符是BlrmMvBdSKiCeYGsiHijdg,如何查看见下一条
curl –XPOST http://localhost:9200/_cluster/nodes/BlrmMvBdSKiCeYGsiHijdg/_shutdown
//查看节点标识符
curl -XGET http://localhost:9200/_cluster/nodes/
//检查集群健康度
curl -XGET http://localhost:9200/_cluster/health?pretty
Elasticsearch 插件
Marvel
Marvel用来监控 Elasticsearch 集群实时、历史状态的有力用具,便于性能优化以及故障诊断。
监控主要分为六个层面,分别是集群层、节点层、索引层、分片层、事件层、Sense,在开发环境下免费使用。
1 | ./bin/plugin -i elasticsearch/marvel/latest |
可以通过下行命令来查看节点上的插件列表
1 | curl http://localhost:9200/_nodes/_local/plugins |
Elasticsearch 配置
config/elasticsearch.yml
1 | # ---------------------------------- Cluster ----------------------------------- |
cluster.name
:保存集群的名字,不同的集群用名字来区分,配置成相同集群名字的各个节点形成一个集群。节点启动时据此自动加入对应的集群,如果集群存在的话。
node.name
:实例(该节点)的名字,可以不定义此参数,这时,Elasticsearch自动选择一个唯一的名称。注意,此名称是每次启动时选择的,所以在每次重启后名称可能都不一样。在很长的时间区间或者重启过后,需要在API中提及具体实例名称,或者用监控工具查看节点,自定义一个名称还是很有帮助的。
http.port
:HTTP API的默认端口号是9200,Elasticsearch很聪明,如果默认端口不可用,引擎将绑定到下一个可用端口。
network.bind_host
:默认情况下 Elasticsearch 的 RESTful 服务只有本机才能访问,也就是说无法从主机访问虚拟机中的服务,可以设置为0.0.0.0以方便主机调式虚拟机。