ES集群搭建
(一) 准备
官网下载 es安装包
JDK版本: 1.8
注意:ES不能以root用户身份运行 确保运行用户对各使用到的目录的权限
获取安装包版本 6.2.4
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
解压到安装目录
tar -xvf elasticsearch-6.2.4.tar.gz -C /opt
配置
# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: myelk //17行(名称相同就是在一个集群里)
node.name: es1 //本机名称 23行
network.host: 0.0.0.0 // 54行
discovery.zen.ping.unicast.hosts: [“es1", “es2", “es3"] //发现集群节点 68行
启动
#cd /opt/elasticsearch-6.2.4/bin #./elasticsearch
#netstat –ltunp // 能够看到9200,9300被监听
# curl 192.168.1.51:9200 //通过浏览器或curl访问9200端口
启动时指定参数:
#./elasticsearch -Ecluster.name=my_cluster_name -Enode.name=my_node_name
了解启动脚本可用选项:
#./elasticsearch -h
ES集群配置
– 集群中的所有节点要相互能够ping通,要在所有集群机器上配置/etc/hosts中的主机名与ip对应关系
– 集群中所有机器都要安装Java环境
– cluster.name集群名称配置要求完全一致
– node.name为当前节点标识,应配置本机的主机名
– discovery为集群节点机器,不需要全部配置
– 配置完成以后启动所有节点服务
验证集群,使用ES内置字段 _cluster/health
curl http://192.168.1.51:9200/_cluster/health?pretty
{
"cluster_name" : "myelk",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 5,
"number_of_data_nodes" : 5, //表示集群中节点的数量
...
...
"active_shards_percent_as_number" : 100.0
}
返回字段解析
status : " green " 集群状态,绿色为正常,黄色表示有问题但不是很严重,红色表示严重故障
RESTful API 调用
Elasticsearch提供了一系列RESTful的API
– 检查集群、节点、索引的健康度、状态和统计
– 管理集群、节点、索引的数据及元数据
– 对索引进行CRUD操作及查询操作
– 执行其他高级操作如分页、排序、过滤等
POST或PUT数据使用json格式
JSON格式:
数组 ["aa", "bb", "cc"]
键值对 { key: value }
RESTful API的简单使用
_cat API查询集群状态,节点信息
例子:
http://192.168.1.51:9200/_cat/health?v //v参数显示详细信息
http://192.168.1.51:9200/_cat/health?help //help显示帮助信息
http://192.168.1.51:9200/_cat/nodes?v //nodes 查询节点状态信息
http://192.168.1.51:9200/_cat/indices?v //索引信息
RESTful API增加:
curl -XPUT http://192.168.1.55:9200/t3/ -d '{
"settings":{
"index":{
"number_of_shards": 5, //分片数量
"number_of_replicas": 1 //副本数量
}
}
}'
http://192.168.1.51:9200/_plugin/head/ //elaserch页面
增:PUT
RESTful API插入数据
– (增)加数据,使用 PUT 方法
– 调用方式: 数据库地址/索引/类型/id值
curl -XPUT http://192.168.1.51:9200/t3/n1/1 -d '{
"姓名":"李白",
"职业":"诗人",
"称号":"诗仙",
"年代":"唐"}'
改:POST
– 修(改)数据,使用 POST 方法
– 在修改数据的时候必须调用 _update 关键字
– 调用方式:数据库地址/索引/类型/id值/_update
curl -XPOST http://192.168.1.53:9200/t3/n1/2/_update -d ' {"doc":{"职业":"粉丝"}}' 文档
查:GET
– 查询使用 GET 方法,GET为默认方法
– 查询显示结果时候可以用 pretty 规范显示格式
– 多条查询需要使用 _mget 关键字配合 json 调用
curl -XGET 'http://192.168.1.55:9200/tedu/teacher/1'
删:DELETE
– 删除时候可以是文档,也可以是库,但不能是类型
curl -XDELETE 'http://192.168.1.55:9200/tedu/teacher/1'
curl -XDELETE 'http://192.168.1.55:9200/tedu'
批量导入数据
使用_bulk批量导入数据
– 批量导入数据使用POST方式,数据格式为json,url ;编码使用data-binary
– 导入含有index配置的json文件
# gzip -d logs.jsonl.gz //解压文件 # curl -XPOST 'http://192.168.1.51:9200/_bulk' --data-binary @logs.jsonl //导入 导入数据时,先查看数据,如有需要,自己添加库和表 web1 ~]# cat /var/log/httpd/access_log //访问日志 192.168.1.40 - - [13/Jun/2019:14:12:57 +0800] "GET / HTTP/1.1" 200 12 "-" "curl/7.29.0" ip地址 时间戳 访问方式 协议/版本号