搜索引擎是什么?
Elasticsearch是什么?
ES基礎架構

ElasticSearch vs Solr 總結
(1)二者安裝都很簡單。
(2)Solr 利用 Zookeeper 進行分布式管理,而 Elasticsearch 自身帶有分布式協調管理功能。
(3)Solr 支持更多格式的數據,比如JSON、XML、CSV,而 Elasticsearch 僅支持json文件格式。
(4)Solr 官方提供的功能更多,而 Elasticsearch 本身更注重於核心功能,高級功能多有第三方插件提供
(5)Solr 在傳統的搜索應用中表現好於 Elasticsearch,但在處理實時搜索應用時效率明顯低於 Elasticsearch。
(6)Solr 是傳統搜索應用的有力解決方案,但 Elasticsearch 更適用於新興的實時搜索應用。
三台機器做集群:192.168.80.30、192.168.80.32、192.168.80.33
環境
CentOS7.0
Java1.8
下載
下載地址:https://www.elastic.co/products/elasticsearch
下載后上傳到CentOS中的/usr/local/ 文件夾中,並解壓到當前文件中重命名為elasticsearch530 /usr/local/elasticsearch530
tar -zxvf elasticsearch-5.3.0.tar.gz
創建 elsearch運行賬戶和組
groupadd elsearch #添加elsearch組 useradd -g elsearch elsearch -s /bin/false
更改elasticsearch文件夾及內部文件的所屬用戶及組為elsearch:elsearch
chown -R elsearch:elsearch elasticsearch530
配置參數
cluster.name: es-application #這是集群名字,我們 起名為 es-application。es啟動后會將具有相同集群名字的節點放到一個集群下。 node.name: "es-node1" #節點名字。 covery.zen.minimum_master_nodes: 1 #指定集群中的節點中有幾個有master資格的節點。對於大集群可以寫3個以上。 discovery.zen.ping.timeout: 40s #默認是3s,這是設置集群中自動發現其它節點時ping連接超時時間,為避免因為網絡差而導致啟動報錯,我設成了40s。 discovery.zen.ping.multicast.enabled: false #設置是否打開多播發現節點,默認是true。 network.host: 0.0.0.0 http.port: 9200 node.master: true #節點從可作為選舉為主節點 node.data: true #也用來存儲數據,可作為負載器 discovery.zen.ping.unicast.hosts: ["192.168.80.32","192.168.80.33","192.168.80.30"] #discovery.zen.ping.unicast.hosts:["節點1的 ip","節點2 的ip","節點3的ip"] 指明集群中其它可能為master的節點ip,以防es啟動后發現不了集群中的其他節點。第一對引號里是node1,默認端口是9300。第二個是 node2 ,在另外一台機器上。
node.name: "es-node2"和 node.name: "es-node3"
啟動
su elsearch cd /usr/local/elasticsearch530 目錄 bin/elasticsearch -d #后台運行
此時啟動服務會發現報錯:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
[root@H32 ~]# cat /etc/sysctl.conf | grep -v "vm.max_map_count" > /tmp/system_sysctl.conf [root@H32 ~]# echo "vm.max_map_count=262144" >> /tmp/system_sysctl.conf [root@H32 ~]# mv /tmp/system_sysctl.conf /etc/sysctl.conf mv:是否覆蓋"/etc/sysctl.conf"? y [root@H32 ~]# cat /etc/sysctl.conf # System default settings live in /usr/lib/sysctl.d/00-system.conf. # To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file # # For more information, see sysctl.conf(5) and sysctl.d(5). vm.max_map_count=262144 [root@H32 ~]# sysctl -p vm.max_map_count = 262144
修改后再次啟動,可通過下命令查看啟動后是否有進程
ps -ef |grep elasticsearch
ES的安裝就此完成,接下來安裝Head插件來監控Elasticsearch
Elasticsearch Head插件
設置內核參數
fs.file-max=65536
vm.max_map_count=262144
設置資源參數
elsearch soft nofile 65536 elsearch hard nofile 65536 sysctl -p
# 增加新的參數,這樣head插件可以訪問es http.cors.enabled: true http.cors.allow-origin: "*"
在5.X版本中不支持直接安裝head插件,需要啟動一個服務
git clone git://github.com/mobz/elasticsearch-head.git
下載 elasticsearch-head 或者 git clone 到 /usr/local/elasticsearch-head
cd elasticsearch-head
npm install
yum -y install xz
xz -d node*.tar.xz tar -xvf node*.tar
解壓完node的安裝文件后,需要配置下環境變量,編輯/etc/profile,添加
# set node environment export NODE_HOME=/usr/local/node790 export PATH=$PATH:$NODE_HOME/bin
別忘記立即執行以下
[root@H32 node790]# echo $NODE_HOME
/usr/local/node790 [root@H32 node790]# node -v [root@H32 node790]# npm -v
安裝grunt
cd elasticsearch-head npm install grunt-cli npm install grunt --save-dev
[root@H32 elasticsearch-head]# grunt -version grunt-cli v1.2.0 grunt v1.0.1
啟動服務
/usr/local/elasticsearch-head/node_modules/grunt/bin/gruntserver
修改head源碼
connect: { server: { options: { port: 9100, hostname: '*', base: '.', keepalive: true } } }
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.80.32:9200";
運行head
cd /usr/local/elasticsearch-head
grunt server -d

現在可以在此頁面操作ES數據了,但這只是一個開始。