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地址                     时间戳                       访问方式         协议/版本号
原文地址:https://www.cnblogs.com/xujint/p/13353526.html