elasticsearch
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
我们建立一个网站或应用程序,并要添加搜索功能,但是想要完成搜索工作的创建是非常困难的。我们希望搜索解决方案要运行速度快,我们希望能有一个零配置和一个完全免费的搜索模式,我们希望能够简单地使用JSON通过HTTP来索引数据,我们希望我们的搜索服务器始终可用,我们希望能够从一台开始并扩展到数百台,我们要实时搜索,我们要简单的多租户,我们希望建立一个云的解决方案。因此我们利用Elasticsearch来解决所有这些问题及可能出现的更多其它问题。
(本文所有主机ip均为172.25.17网段,主机名和ip相对应。比如172.25.17.3对应server3)
一 环境搭建:
1.安装elasticsearch和依赖包jdk:
[root@server4 ~]# ls
elasticsearch-2.3.3.rpm jdk-8u121-linux-x64.rpm
[root@server4 ~]# yum install elasticsearch-2.3.3.rpm jdk-8u121-linux-x64.rpm -y
2.编辑配置文件:
[root@server4 elasticsearch]# vim elasticsearch.yml
设定:
17 cluster.name: my-es
23 node.name: server4
37 path.data: /var/lib/elasticsearch/
41 path.logs: /var/log/elasticsearch/
47 bootstrap.mlockall: true
58 network.host: 172.25.17.4
62 http.port: 9200
开启服务:
[root@server4 elasticsearch]# /etc/init.d/elasticsearch start
Starting elasticsearch: [ OK ]
查看端口:开启9200端口
[root@server4 elasticsearch]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 922/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 998/master
tcp 0 0 172.25.17.4:22 172.25.17.250:34490 ESTABLISHED 1400/sshd
tcp 0 0 ::ffff:172.25.17.4:9200 :::* LISTEN 1684/java
tcp 0 0 ::ffff:172.25.17.4:9300 :::* LISTEN 1684/java
tcp 0 0 :::22 :::* LISTEN 922/sshd
tcp 0 0 ::1:25 :::* LISTEN 998/master
3.在浏览器中访问9200端口,可以看到相关的信息
二 使用插件:
1.准备插件elasticsearch-head-master.zip:
[root@server4 ~]# ls
elasticsearch-2.3.3.rpm elasticsearch-head-master.zip jdk-8u121-linux-x64.rpm logstash-2.3.3-1.noarch.rpm
安装:
[root@server4 ~]# /usr/share/elasticsearch/bin/plugin install file:/root/elasticsearch-head-master.zip
-> Installing from file:/root/elasticsearch-head-master.zip...
Trying file:/root/elasticsearch-head-master.zip ...
Downloading .........DONE
Verifying file:/root/elasticsearch-head-master.zip checksums if available ...
NOTE: Unable to verify checksum for downloaded plugin (unable to find .sha1 or .md5 file to verify)
Installed head into /usr/share/elasticsearch/plugins/head
插件查看:
[root@server4 ~]# /usr/share/elasticsearch/bin/plugin list
Installed plugins in /usr/share/elasticsearch/plugins:
- head
浏览器访问:
2.编辑配置文件:
[root@server4 ~]# cd /etc/elasticsearch/
[root@server4 elasticsearch]# vim elasticsearch.yml
设定主机:
72 discovery.zen.ping.unicast.hosts: ["server4", "server5","server6"]
设定完成之后将安装包和修改好的配置文件发送到server5和server6端:
[root@server4 ~]# ls
elasticsearch-2.3.3.rpm elasticsearch-head-master.zip jdk-8u121-linux-x64.rpm
[root@server4 ~]# scp elasticsearch-2.3.3.rpm jdk-8u121-linux-x64.rpm root@172.25.17.5:/root
[root@server4 ~]# scp elasticsearch-2.3.3.rpm jdk-8u121-linux-x64.rpm root@172.25.17.6:/root
[root@server4 elasticsearch]# scp elasticsearch.yml root@172.25.17.5:/etc/elasticsearch/elasticsearch.yml
root@172.25.17.5's password:
elasticsearch.yml 100% 3199 3.1KB/s 00:00
[root@server4 elasticsearch]# scp elasticsearch.yml root@172.25.17.6:/etc/elasticsearch/elasticsearch.yml
root@172.25.17.6's password:
elasticsearch.yml 100% 3199 3.1KB/s 00:00
在serve5和server6端的配置文件中需要修改node.name和node.host:
23 node.name: server5
59 network.host: 172.25.17.5
3.在server5和server6端开启服务:
[root@server5 elasticsearch]# /etc/init.d/elasticsearch start
Starting elasticsearch: [ OK ]
[root@server6 elasticsearch]# /etc/init.d/elasticsearch start
Starting elasticsearch: [ OK ]
浏览器访问:
三 设定主从服务器的功能:
编辑server4端配置文件:
25 node.master: true
26 node.data: false
27 http.enabled: true
server5端:
25 node.master: false
26 node.data: true
27 http.enabled: true
server6端:
19 node.master: false
20 node.data: true
21 http.enabled: true
三端重启服务:
[root@server4 elasticsearch]# /etc/init.d/elasticsearch reload
Stopping elasticsearch: [ OK ]
Starting elasticsearch: [ OK ]
[root@server5 elasticsearch]# /etc/init.d/elasticsearch reload
Stopping elasticsearch: [ OK ]
Starting elasticsearch: [ OK ]
[root@server6 elasticsearch]# /etc/init.d/elasticsearch reload
Stopping elasticsearch: [ OK ]
Starting elasticsearch: [ OK ]
浏览器访问:
解析:
[root@server4 elasticsearch]# curl -XGET 'http://172.25.17.4:9200/_cluster/health?pretty=true'
{
"cluster_name" : "my-es",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 2,
"active_primary_shards" : 5,
"active_shards" : 10,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}