首页 > 技术文章 > Elasticsearch使用

ingxx 2019-01-15 12:17 原文

配置服务器静态IP

 

#这里我的网卡是ens 33
vim /etc/sysconfig/network-scripts/ifcfg-ens33
#加入一下配置
IPADDR=192.168.25.10 #根据设置的子网IP配置 GATEWAY=192.168.25.2 #根据设置的网关配置 NETMASK=255.255.255.0 #根据配置的子网掩码设置 DNS1=8.8.8.8 #DNS服务器 #修改下面两个配置 ONBOOT=yes BOOTPROTO=static
#重启服务
service network restart
关闭防火墙
# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service

 

安装JDK

#下载JDK
wget --no-check-certificate https://soft.ryana.cn/%E5%BC%80%E5%8F%91%E7%9B%B8%E5%85%B3/JDK/Jdk_1.8/jdk-8u144-linux-x64.rpm
#安装JDK
rpm -ivh jdk-8u144-linux-x64.rpm
#配置环境变量
# 编辑 /etc/profile 文件
vi /etc/profile
# 在文本中新增以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_144
export JRE_HOME=/usr/java/jdk1.8.0_144/jre
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
使环境变量生效
source /etc/profile

安装 ElasticSearch

#新建文件夹
mkdir /elasticsearch
cd /elasticsearch
#下载 elasticsearch 6.5.4 版本
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
#解压
tar -xvf elasticsearch-6.5.4.tar.gz
#es不支持root用户启动
# 创建 组
groupadd elsearch
# 创建 用户
useradd elsearch -g elsearch
chown -R elsearch:elsearch elasticsearch-6.5.4
#配置配置文件 注意这里遵从yml语法
vim elasticsearch-6.5.4/config/elasticsearch.yml
#修改 允许所有IP链接
network.host: 0.0.0.0
#因为对内存有要求所以
vim /etc/sysctl.conf
# 添加下面配置
vm.max_map_count=655360
# 编辑完,使命令生效
sysctl -p
# 编辑文件
vi /etc/security/limits.conf
# 修改并加入下面配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
#切换用户
su elsearch
#启动  -d参数为守护进程启动
./elasticsearch-6.5.4/bin/elasticsearch 

访问 ip:9200

安装IK分词器

 因为不支持中文分词所以需要安装ik分词器

Github链接

https://github.com/medcl/elasticsearch-analysis-ik/releases

进入plugins目录

#下载ik分词器
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.5.4/elasticsearch-analysis-ik-6.5.4.zip 
#解压ik分词器
unzip -d ik-analysis elasticsearch-analysis-ik-6.5.4.zip
#可能没有unzip命令
yum install -y unzip
#删除压缩包
rm -rf elasticsearch-analysis-ik-6.5.4.zip

测试

 

安装kibana

#下载
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.5.4-linux-x86_64.tar.gz
#解压
tar -xzvf kibana-6.5.4-linux-x86_64.tar.gz
#修改配置文件
vim kibana-6.5.4-linux-x86_64/config/kibana.yml 
#!!!这里遵循yml规范
#配置端口
server.port: 5601
#elasticsearch地址
elasticsearch.url: "http://192.168.25.10:9200"
#默认索引?
kibana.index: ".kibana"
#允许哪些ip链接 这里是所有ip 生产环境请修改
server.host: "0.0.0.0"

启动端口为5601

./kibana-6.5.4-linux-x86_64/bin/kibana

安装logstash

#下载
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.5.4.tar.gz
#解压
tar -xzvf logstash-6.5.4.tar.gz

安装jdbc插件

#进入logstacsh目录
cd logstash-6.5.4
#安装插件
bin/logstash-plugin install logstash-input-jdbc

下载jdbc jar包

#下载
wget https://cdn.mysql.com//Downloads/Connector-J/mysql-connector-java-5.1.47.tar.gz
#解压
tar -xzvf  mysql-connector-java-5.1.47.tar.gz

进入 logstacsh下的config目录 新建jdbc.conf

vim jdbc.conf

input {
  jdbc {
    jdbc_driver_library => "jdbc jar包路径"
    jdbc_driver_class => "com.mysql.jdbc.Driver"
    jdbc_connection_string => "jdbc:mysql://<mysql_host>:3306/rta"
    jdbc_user => "<username>"
    jdbc_password => "<password>"
    schedule => "* * * * *"
    statement => "SELECT * FROM table"
    use_column_value => true
    tracking_column_type => "timestamp"
    tracking_column => "update_time"
  }
}

output {
  elasticsearch {
    hosts => ["host1:9200", "host2:9200"]
    user => "<user>"
    password => "<password>"
    index => "索引名"
    document_id => "%{id}"

    document_type =>"类型名"
  }
}

----------------------------------------------------------------------------------------
jdbc_driver_library: jdbc mysql 驱动的路径,在上一步中已经下载
jdbc_driver_class: 驱动类的名字,mysql 填 com.mysql.jdbc.Driver 就好了
jdbc_connection_string: mysql 地址
jdbc_user: mysql 用户
jdbc_password: mysql 密码
schedule: 执行 sql 时机,类似 crontab 的调度
statement: 要执行的 sql
use_column_value: 使用递增列的值
tracking_column_type: 递增字段的类型,numeric 表示数值类型, timestamp 表示时间戳类型
tracking_column: 递增字段的名称,这里使用 update_time 这一列,这列的类型是 timestamp

  hosts: es 集群地址
  user: es 用户名
  password: es 密码
  index: 导入到 es 中的 index 名,这里我直接设置成了 mysql 表的名字
  document_id: 导入到 es 中的文档 id,这个需要设置成主键,否则同一条记录更新后在 es 中会出现两条记录,%{id} 表示引用 mysql 表中 id 字段的值

 

 执行

./bin/logstash -f ./config/jdbc.conf 

 Docker安装es

安装docker

yum install docker
#或者 参考
https://docs.docker.com/install/linux/docker-ce/centos/#install-using-the-repository

由于默认使用国外仓库所以

mkdir /etc/docker
vim /etc/docker/daemon.json

添加

{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "live-restore": true
}
systemctl docker start  #启动docker
systemctl start docker  #开机启动
#因为对内存有要求所以
vim /etc/sysctl.conf
# 添加下面配置
vm.max_map_count=655360
# 编辑完,使命令生效
sysctl -p
# 编辑文件
vi /etc/security/limits.conf
# 修改并加入下面配置
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

以开发模式启动

docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.5.4

生产环境请参考

https://www.elastic.co/guide/en/elasticsearch/reference/6.5/docker.html#docker-prod-cluster-composefile

推荐阅读