首先查看cluster状态,下面是一台单机的ES,它是下载的文件解压后直接启动的结果,即一个单机,或者说空集群。
[appadmin@hadoop4 elasticsearch]$ curl 'localhost:9200/_cluster/health?pretty'
{
"cluster_name" : "elasticsearch",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"active_primary_shards" : 10,
"active_shards" : 10,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 10,
"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" : 50.0
}
[appadmin@hadoop4 elasticsearch]$
其中三种健康状态green yellow red。
颜色 | 意义 |
green | 所有主要分片和复制分片都可用 |
yellow | 所有主要分片可用,但不是所有复制分片都可用 |
red | 不是所有的主要分片都可用 |
集群节点的工作原理简述:
一个节点(node)就是一个Elasticsearch实例,而一个集群(cluster)由一个或多个节点组成,它们具有相同的cluster.name,它们协同工作,分享数据和负载。当加入新的节点或者删除一个节点时,集群就会感知到并平衡数据。+
集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引、增加或移除节点等。主节点不参与文档级别的变更或搜索,这意味着在流量增长的时候,该主节点不会成为集群的瓶颈。任何节点都可以成为主节点。我们例子中的集群只有一个节点,所以它会充当主节点的角色。
做为用户,我们能够与集群中的任何节点通信,包括主节点。每一个节点都知道文档存在于哪个节点上,它们可以转发请求到相应的节点上。我们访问的节点负责收集各节点返回的数据,最后一起返回给客户端。这一切都由Elasticsearch处理。
下面介绍集群配置方法。
环境是三台机器:
192.168.0.16 esnode1
192.168.0.12 esnode2
192.168.0.15 esnode0
OS内核3.10.0-229.el7.x86_64。ES版本2.2.1。
esnode0做master,其他为slave。
在每台机器上解压从官网下载的文件包到/opt/elasticsearch。
Master的配置:
[appadmin@hadoop4 config]$ pwd
/opt/elasticsearch/config
[appadmin@hadoop4 config]$ grep -v '^#' elasticsearch.yml
cluster.name: esapp
node.name: esnode0
node.master: true
node.data: true
network.host: 0.0.0.0
[appadmin@hadoop4 config]$
Slave的配置:
[appadmin@hadoop3 config]$ grep -v '^#' elasticsearch.yml
cluster.name: esapp
node.name: esnode2
node.master: false
node.data: true
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["esnode0"]
[appadmin@hadoop3 config]$
这是最简单的配置。其中,network.host: 0.0.0.0代表了没有绑定具体的ip,这样其他机器可以通过9200这个默认端口通过http方式访问查看服务。而slave中的discovery.zen.ping.unicast.hosts指定了master的地址。
然后可以安装一个插件:
[appadmin@hadoop4 bin]$ pwd
/opt/elasticsearch/bin
[appadmin@hadoop4 bin]$ ./plugin install mobz/elasticsearch-head
-> Installing mobz/elasticsearch-head...
Trying https://github.com/mobz/elasticsearch-head/archive/master.zip ...
Downloading ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................DONE
Verifying https://github.com/mobz/elasticsearch-head/archive/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 /opt/elasticsearch/plugins/head
[appadmin@hadoop4 bin]$ ./plugin list
Installed plugins in /opt/elasticsearch/plugins:
- head
[appadmin@hadoop4 bin]$
可以通过http://10.120.20.206:9200/_plugin/head/ 查看信息。
可以增加以下测试数据,数据来源:https://github.com/bly2k/files/blob/master/accounts.zip?raw=true
通过下面命令加载进去 curl -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"