ElasticSearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)。
1、术语
集群 | cluster | 一个集群就是由一个或多个节点组织在一起,它们共同持有你整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识。 |
节点 | node | 一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能。同样,一个节点也是由一个名字来标识的。 |
索引 | index | 一个索引就是一个拥有几分相似特征的文档的集合。一个索引由一个名字来标识(必须全部是小写字母的)。类似 mysql中 database。 |
类型 | type | 在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。类似 mysql 中 table。 |
文档 | document | 一个文档是一个可被索引的基础信息单元。其由_id来标识。类似 mysql 中 id。例如一个文档通过/index/type/id来索引到。 |
2、基本结构
基本特点:
(1)分片和复制
一个索引可以存储超出单个结点硬件限制的大量数据。例如,当一个索引拥有10亿文档,占据1T的磁盘大小,一台主机所拥有的的磁盘大小达不到1T磁盘空间;或者单个节点同时处理大量用户的搜索请求,容易出现瓶颈,响应过慢。
为解决以上等问题,ElasticSearch支持将索引划分为多份,分配在集群中不同节点上,该技术被称为分片技术。同时,分布式的架构也提高了吞吐量。
另外,由于某些故障导致其中一台节点运行失败,导致该节点上的分片丢失,因此出现了复制分片技术,用户可以指定分片备份数,将备份分片分配在不与原分片同一节点的其它节点上,因此在该节点失败的状况下,可以在集群中另几台节点上找到备份分片,保证数据的正确性。
3、安装
3.1环境
操作系统:Redhat6.5
3.2安装
注意:主机内存需要大一些,不然无法启动成功,我之前用了一台1C,2GB的虚拟机,可能由于同时运行多种服务,导致内存不够,未启动成功。
(1)获取elasticsearch包源
# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.2.2.tar.gz
(2)修改配置文件
$ cd elasticsearch-5.2.2/config
修改主机IP地址,若单台节点也可以默认不修改,为本地localhost。
network.host: x.x.x.x //主机IP地址
(3)创建用户,出于安全考虑,elasticsearch默认不允许采用root用户运行。
创建elasticsearch用户组
# groupadd elasticsearch
创建用户elasticsearch并加入用户组elasticsearch以及设置密码elasticsearch
# useradd elasticsearch-g elasticsearch -p elasticsearch
并设置root权限
# vim /etc/sudoers
elasticsearch ALL=(ALL) ALL
(4)用elasticsearch用户登录主机,解压elasticsearch-5.2.2.tar.gz
$ tar xvzf elasticsearch-5.2.2.tar.gz
(5)启动elasticsearch服务
$ cd elasticsearch-5.2.2/bin/
$ nohup ./elasticsearch &
启动时出现如下错误:
java.lang.UnsupportedOperationException:seccomp unavailable: requires kernel 3.5+ with CONFIG_SECCOMP andCONFIG_SECCOMP_FILTER compiled in
原因,是由于Linux版本过低报的错误。
解决办法:
a)重新安装高版本的linux系统。
b)该警告不影响使用,可忽略该项错误。
(6)验证elasticsearch
$ curl 'localhost:9200/'
{
"name" : "E3VPWLI",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "dIkuBg7oTLGjV3mHfTaL6g",
"version" : {
"number" : "5.2.2",
"build_hash" : "f9d9b74",
"build_date" : "2017-02-24T17:26:45.835Z",
"build_snapshot": false,
"lucene_version" : "6.4.1"
},
"tagline" : "You Know, for Search"
}
4、参考文章
https://www.ibm.com/developerworks/cn/opensource/os-cn-elk/