Elastic Stack
简介:
- 组成:
- Elasticsearch
数据存储、查询与分析 - Logstash Beats ()
数据收集与处理 - Kibana
数据探索与可视化分析
- 大数据分析利器
- 使用门槛低,开发周期短,上线快
GET THINGS DONE - 性能好,查询快,实时展现结果
T+0 - 扩容方便,快速支撑增长迅猛的数据
Elasticsearch7.9.0 安装
一、安装JDK1.8
- 创建安装目录
[root@c5a7af85a360 local]# mkdir /usr/local/java/
[root@c5a7af85a360 java]# tar -zxvf jdk-8u261-linux-x64.tar.gz -C /usr/local/java/
- 设置环境变量
vim /etc/profile
在末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_261
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
- 使环境变量生效
[root@c5a7af85a360 java]# source /etc/profile
- 添加软链接
[root@c5a7af85a360 java]# ln -s /usr/local/java/jdk1.8.0_261/bin/java /usr/bin/java
- 检查
[root@c5a7af85a360 java]# java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
二、安装es7
- 创建安装目录
[root@c5a7af85a360 java]# mkdir /usr/local/es/
- 解压至安装目录
链接:
链接: 百度网盘下载 密码: 0swh
[root@c5a7af85a360 es]# tar -zxvf elasticsearch-7.9.0-linux-x86_64.tar.gz -C /usr/local/es/
- 解压至安装目录
修改配置/usr/local/es/elasticsearch-7.9.0/config/jvm.options,内存占用可以调小一点
-Xms512m
-Xmx512m
- 修改配置/usr/local/es/elasticsearch-7.9.0/config/elasticsearch.yml
1.修改数据和日志目录
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /usr/local/es/elasticsearch-7.9.0/data
#
# Path to log files:
#
path.logs: /usr/local/es/elasticsearch-7.9.0/logs
2.修改绑定ip,允许远程访问
network.host: 0.0.0.0
3.保留一个节点
node.name: node-1
cluster.initial_master_nodes: ["node-1"]. //6x版本不需要
三、修改linux内核参数
- 修改/etc/security/limits.conf 增加下面内容
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 131072
- 修改/etc/sysctl.conf 增加下面内容
vm.max_map_count=655360
然后执行命令,使配置生效
sysctl -p
四. 创建账户esuser,因为es默认不允许以root账户运行
//创建用户组
groupadd esgroup
//创建用户
useradd -g esgroup esuser
//设置权限
chown -R esuser:esgroup /usr/local/es/
//设置密码
passwd esuser
[root@c5a7af85a360 es]# groupadd esgroup
[root@c5a7af85a360 es]# useradd -g esgroup esuser
[root@c5a7af85a360 es]# chown -R esuser:esgroup /usr/local/es/
[root@c5a7af85a360 es]# passwd esuser
五. 启动
su esuser
[esuser@c5a7af85a360 bin]$ cd /usr/local/es/elasticsearch-7.9.0/bin/
//启动es
./elasticsearch
//后台启动es
./elasticsearch -d
//查找es进程
ps -ef | grep elastic
六. 访问
输入http://ip:9200,看到返回一串 JSON 格式的代码就说明已经成功了:
Kibana7.6.2 安装
一、安装Kibana
- (1)创建安装目录
mkdir /usr/local/kibana/
- 解压至安装目录
[root@c5a7af85a360 kibana]# tar -zxvf kibana-7.9.0-linux-x86_64.tar.gz -C /usr/local/kibana/
- 编辑kibana.yml
[root@c5a7af85a360 kibana]# vi /usr/local/kibana/kibana-7.9.0-linux-x86_64/config/kibana.yml
# 端口
server.port: 9210
# 允许访问的IP地址
server.host: "0.0.0.0"
# es的地址
elasticsearch.hosts: ["http://127.0.0.1:9200"]
# Kibana在es中的索引
kibana.index: ".kibana"
# es中kibana的用户名 注意是elasticsearch设置的用户名
elasticsearch.username: "kibana"
# es中kibana的密码 注意是elasticsearch设置的密码
elasticsearch.password: "es123456"
# 设置中文显示
i18n.locale: "zh-CN"
- 切换到bin目录
[root@c5a7af85a360 kibana]# cd /usr/local/kibana/kibana-7.9.0-linux-x86_64/bin/
- 启动 / 后台启动
./kibana --allow-root
/
nohup ./kibana --allow-root >/dev/null 2>&1 &
二、访问Kibana
通过浏览器访问http://127.0.0.1:9210,可以看到kibana的登陆界面
输入es中的elastic用户名和密码登陆主界面
关闭尝试 使用
ps -ef|grep node
fuser -n tcp 9210
kill -9 端口
ps -ef|grep node 或 netstat -anltp|grep 5601
nohup ./kibana --allow-root >/dev/null 2>&1 &
术语
文档document
索引index
PHP连接Elasticsearch
<?php
/**
* Es.php
* User chenzhuo
* Date 2020/8/31 3:34 下午
* Description :
*/
namespace app\common\lib\search;
use Elasticsearch\ClientBuilder;
class Es
{
private $client;
public function __construct()
{
$hosts = ['127.0.0.1:9200'];
$this->client = ClientBuilder::create()->setHosts($hosts)->build();
}
/**
* 创建表
* User: chenzhuo
* Date: 2020/8/31 4:19 下午
*/
public function create_index($table, $params)
{
$params = [
'index' => $table,
'body' => [
'settings' => [
'number_of_shards' => 1,//当前只有一台ES,1就可以了
'number_of_replicas' => 0//副本0,因为只有一台ES
],
'mappings' => [
'_source' => [
'enabled' => true
],
'properties' => $params
]
]
];
return $this->client->indices()->create($params);
}
/**
* 删除表
* User: chenzhuo
* Date: 2020/8/31 4:20 下午
*/
public function delete_index()
{
$deleteParams['index'] = $this->indexData['index'];
$this->client->indices()->delete($deleteParams);
}
/**
* index/type/id 方式请求一个文档信息
* @param $id
* @param $table
* @return array|callable
* User: chenzhuo
* Date: 2020/8/31 7:51 下午
*/
public function getById($id, $table){
$params = [
'index' => $table,
'id' => $id
];
$response = $this->client->get($params);
return $response;
}
/**
* 更改现存字段,或添加新字段
* @param $id
* @param $table
* @param $data
* @return array|callable
* User: chenzhuo
* Date: 2020/8/31 7:53 下午
*/
public function updateById($id, $table, $data){
$params = [
'index' => $table,
'id' => $id,
'body' => [
'doc' => $data
]
];
$response = $this->client->update($params);
return $response;
}
/**
* 通过指定文档的 /index/type/id 删除文档:
* @param $id
* @param $table
* @return array|callable
* User: chenzhuo
* Date: 2020/8/31 7:51 下午
*/
public function delById($id, $table){
$params = [
'index' => $table,
'id' => $id,
];
$response = $this->client->delete($params);
return $response;
}
//插入索引数据
public function add_document($id, $table, $data)
{
$params = [
'index' => $table,
'id' => $id,
'body' => $data
];
$ret = $this->client->index($params);
}
public function bulk($params){
$ret = $this->client->bulk($params);
}
/**
* 删除文档
* @param $id 文档id
* @return array|callable
* User: chenzhuo
* Date: 2020/8/31 4:13 下午
*/
public function delete_document($id)
{
$deleteParams = array();
$deleteParams['index'] = $this->indexData['index'];
$deleteParams['type'] = $this->indexData['type'];
$deleteParams['id'] = $id;
$retDelete = $this->client->delete($deleteParams);
return $retDelete;
}
}