elasticsearch 简介
ElasticSearch 是一个基于 Lucene 的搜索服务器。它是一个分布式多用户能力的全文搜索引擎,基于 RESTful web 接口。Elasticsearch 是用 Java 开发的。
目前 Elasticsearch 与阿里云携手合作在阿里云上提供的 Elasticsearch 和 Kibana 托管云服务,包含 X-Pack 全部功能。目前应用 elasticsearch 构建搜索系统的公司有:Github 使用 Elasticsearch 搜索 TB 级别的数据、Sony(Sony 公司使用 elasticsearch 作为信息搜索引擎)国内有赶集网、京东等。
搜索流程如图:用户打开浏览器输入关键字如“羽绒服”后浏览器将会请求我们的应用服务器,应用服务器通过调用 elasticsearch 的 api 后请求 es 的搜索服务器,搜索服务器得到结果后返回给应用服务器最终返回到浏览器。
image.png
elasticsearch 涉及的关键性名词
cluster(集群)
代表一个集群,集群中有多个节点,其中有一个为主节点,默认这个主节点是可以通过选举产生的,配置方式可指定哪些节点主节点,哪些节点数据节点,主从节点是对于集群内部来说的。es 的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看 es 集群,在逻辑上是个整体,你与任何一个节点的通信和与整个 es 集群通信是等价的。
shards(分片)
代表索引分片,es 可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索,可提高搜索性能,当然也不是越大越好,还是要看你要存储的数据量,如果数据量大,可把分片设置大点,数据量小,可把分片设置小点,默认是 5 个分片,分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas(副本)
代表索引副本,es 可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高 es 的查询效率,es 会自动对搜索请求进行负载均衡。默认是 1 个副本。
gateway
代表 es 索引快照的存储方式,es 默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘,默认是 1 g,官方建议一个节点最大不超过 32G,超过 32G 性能反而会下降。gateway 对索引快照进行存储,当这个 es 集群关闭再重新启动时就会从 gateway 中读取索引备份数据。
discovery.zen
代表 es 的自动发现节点机制,es 是一个基于 p2p 的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。早期的版本不需要任何配置,只要在一个网段,启动后就会组成集群,非常方便,但是同时也带来了问题,某台机器的测试数据和另一台机器的数据会互相同步。
Transport
代表 es 内部节点或集群与客户端的交互方式,默认内部是使用 tcp 协议进行交互,同时它支持 http 协议(json 格式)、thrift、servlet、memcached、zeroMQ 等的传输协议(通过插件方式集成)java 客户端的方式是以 tcp 协议在 9300 端口上进行通信 http 客户端的方式是以 http 协议在 9200 端口上进行通信。
搭建 elasticsearch 服务
在实验楼环境中,打开 xfce 终端,依次执行如下命令: 1.切换到 Code 目录
cd /home/shiyanlou/Code/
下载 elasticsearch 软件包到当前目录中
sudo wget https://labfile.oss.aliyuncs.com/courses/1014/elasticsearch-2.3.4.zip
解压 elasticsearch 文件包
unzip elasticsearch-2.3.4.zip
image.png
切换到 elasticsearch-2.3.4
cd elasticsearch-2.3.4
创建日志目录和数据目录
mkdir logs
mkdir data
image.png
切换到 elasticsearch-2.3.4 的 bin 目录下
cd bin
安装 service 用于启动 es
sudo wget https://labfile.oss.aliyuncs.com/courses/1014/elasticsearch-servicewrapper-master.zip
image.png
解压 elasticsearch-servicewrapper-master.zip 文件包
unzip elasticsearch-servicewrapper-master.zip
image.png
执行移动命令把 bin/elasticsearch-servicewrapper-master 下的 service 移动到 bin 目录下
mv elasticsearch-servicewrapper-master/service /home/shiyanlou/Code/elasticsearch-2.3.4/bin
image.png
修改配置
修改配置 elasticsearch-2.3.4/bin/service/elasticsearch.conf 和 elasticsearch-2.3.4/config/elasticsearch.yml
在 elasticsearch.conf 第 30 行左右修改配置
wrapper.java.classpath.1=%ES_HOME%/bin/service/lib/wrapper.jar
# 注释掉 classpath.2 这句,把以前的 classpath.3 和 4 改为 2 和 3
# wrapper.java.classpath.2=%ES_HOME%/lib/elasticsearch*.jar
wrapper.java.classpath.2=%ES_HOME%/lib/*.jar
wrapper.java.classpath.3=%ES_HOME%/lib/sigar/*.jar
image.png
在第 52 行后加入
wrapper.java.additional.10=-Des.insecure.allow.root=true
启动类的修改 在 58 行左右
# 把这句注释掉,然后在下面添加下面这两句
# wrapper.app.parameter.1=org.elasticsearch.bootstrap.ElasticsearchF
wrapper.app.parameter.1=org.elasticsearch.bootstrap.Elasticsearch
wrapper.app.parameter.2=start
image.png
修改 config/elasticsearch.yml 文件
新加入下面这两行
network.host: 127.0.0.1
security.manager.enabled: false
执行关键的一步启动 elasticsearch
在 bin/service/ 下执行
./elasticsearch start # 启动后检查日志没有任何错误
./elasticsearch stop
image.png
检查 elasticsearch 端口 9300 用于程序开发 9200 用于 rest 访问
网友评论