提示:
部分资源可能访问较慢,根据自身情况进行需修改
安装ElasticSearch7.13
linux安装
# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.13.0-linux-x86_64.tar.gz
# 解压
tar -zxvf elasticsearch-7.13.0-linux-x86_64.tar.gz
# 将elasticsearch-7.13.0移动到usr下面并改为elasticsearch
mv /root/elasticsearch-7.13.0 /usr/elasticsearch/
# 进入/usr/elasticsearch
cd /usr/elasticsearch
# 修改 config 下的 elasticsearch.yml
vim config/elasticsearch.yml
node.name: node-1
network.host: 172.26.46.96 #
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
# 修改 config/jvm.options
vim config/jvm.options
-Xms1g
-Xmx1g
# 上面这两个修改 我在 elasticsearch-7.13.0 中是默认注释的,更具配置文件的的说法可以指定大小,也可以系统自动分配(我选择自动分配)
# 添加es用户,es默认root用户无法启动,需要改为其他用户
useradd es
# 修改es用户密码
passwd es
# 改变es目录拥有者账号
chown -R es /usr/elasticsearch/
# 1、错误:bootstrap check failure [2] of [2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
#(elasticsearch用户拥有的内存权限太小)
# 修改/etc/sysctl.conf
vim /etc/sysctl.conf
vm.max_map_count=655360
# 执行sysctl -p 让其生效
sysctl -p
# 2、错误:bootstrap check failure [1] of [2]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
#(文件权限不足)
# 修改/etc/security/limits.conf
vim /etc/security/limits.conf
末尾添加:
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
#3、错误(这个错误暂时没有遇见过,)
# 线程不够
# 修改 vim /etc/security/limits.d/90-nproc.conf
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 1024 修改为 * soft nproc 4096
# 切换es用户
su es
# 启动es(第一种方式)
/usr/elasticsearch/bin/elasticsearch
# 启动es(第二种方式-后台启动)
/usr/elasticsearch/bin/elasticsearch -d
# 查看es进程
ps -ef|grep elasticsearch
#访问
http://ip:9200
win安装
win系统上就是下载解压启动,配置的话和linux基本一样
ElasticSearch添加用户密码(Linux和win都可以使用)
#在config目录中,编辑elasticsearch.yml文件,添加如下
xpack.security.transport.ssl.enabled: true
xpack.security.enabled: true
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type,X-Requested-with,Content-Length
# Linux 首先配置elasticsearch.yml文件后启动,然后在执行下方的操作
#在bin目录下设置密码,输入y后输入自己设置的密码,要输入好几遍
elasticsearch-setup-passwords interactive
#将设置apm_system, beats_system, elastic, kibana_system, logstash_system, remote_monitoring_user这些内置用户的密码。请务必牢记!
# 默认用户名
elastic
# 密码(自己设置的)
2418870649
安装配置kibana
win安装
#访问
http://127.0.0.1:5601
linux安装
# 下载
https://artifacts.elastic.co/downloads/kibana/kibana-7.13.0-linux-x86_64.tar.gz
# 解压
tar -zxvf kibana-7.13.0-linux-x86_64.tar.gz
# 将kibana-7.13.0-linux-x86_64移动到usr下面并改名为kibana
mv /root/kibana-7.13.0-linux-x86_64 /usr/kibana/
# 改变es目录拥有者账号
chown -R es /usr/kibana/
# 修改权限
chmod -R 777 /usr/kibana/
# 修改kibana.yml
cd /usr/kibana
vim config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://172.26.46.96:9200"]
# 启动(第一种方式)
su es
/usr/kibana/bin/kibana
# 启动(第二种方式)
nohup /usr/kibana/bin/kibana &
# 用root启动(第三种方式)
/usr/kibana/bin/kibana --allow-root
# 查看kibana进程
ps -ef|grep kibana
# kibana dev tools快捷键:
ctrl+enter 提交请求
ctrl+i 自动缩进
# 访问
http://ip:5601
kibana中文界面显示
ElasticSearch设置密码后Kibana需要的设置
#在config目录里修改kibana.yml文件添加
elasticsearch.username: "elastic"
elasticsearch.password: "2418870649"
# kibana推荐用 kibana_system 用户
# 这个设配不知道是第一次配置谁,设就是超级用户,还是说默认的elastic就是超级用户(下一次配置设个试一下)
elasticsearch.username: "kibana_system"
elasticsearch.password: "2418870649"
安装配置Logstash
linux安装和win安装
# 说明就在 win下面配置过,在linux中应该基本相同,基本配置没有问题
# 注意!!!!!!!!!!!
将mysql的jar 包放入 logstash-7.13.0\logstash-core\lib\jars 下
# 放在 logstash-7.13.0\config 下 文件名 mysql.conf
input {
stdin {
}
jdbc{
jdbc_connection_string => "jdbc:mysql://127.0.0.1:3306/ly?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai"
jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
jdbc_user => "root"
jdbc_password => "2418870649"
# 是否分页
jdbc_paging_enabled => "true"
# 分页大小
jdbc_page_size => "50000"
#设置时区
jdbc_default_timezone => "Asia/Shanghai"
# 执行sql语句
statement => "select wid, articlename,articlekeyword,articledescription,artuclecontent,artuclethumbnail,artuledata from ly_article"
# 下载连接数据库的驱动包,建议使用绝对地址
jdbc_driver_library => "E:\logstash-7.13.0\logstash-core\lib\jars\mysql-connector-java-8.0.16.jar"
# 这是控制定时的,重复执行导入任务的时间间隔,第一位是分钟 不设置就是1分钟执行一次
schedule => "* * * * *"
}
}
output {
elasticsearch {
# 要导入到的Elasticsearch所在的主机
hosts => ["http://localhost:9200"]
# 要导入到的Elasticsearch的索引的名称
index => "article"
# 主键名称(类似数据库主键)
document_id => "%{wid}"
}
stdout{
# JSON格式输出
codec => json_lines
}
}
#启动 (配置文件启动 mysql.conf自己创建)
bin\logstash.bat -f config\mysql.conf
Elasticsearch集成IK分词器
#win系统安装
现在对应版本的中文分词器 解压后 把其中所有的内容复制到 E:\elasticsearch-7.13.0\plugins\ik 下面
ik 自己手动创建
#linux
1、集成IK分词器
IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0则发展为 面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。
IK分词器3.0的特性如下:
1)采用了特有的“正向迭代最细粒度切分算法“,具有60万字/秒的高速处理能力。
2)采用了多子处理器分析模式,支持:英文字母(IP地址、Email、URL)、数字(日期,常用中文数量词,罗马数字,科学计数法),中文词汇(姓名、地名处理)等分词处理。
3)支持个人词条的优化的词典存储,更小的内存占用。
4)支持用户词典扩展定义。
5)针对Lucene全文检索优化的查询分析器IKQueryParser;采用歧义分析算法优化查询关键字的搜索排列组合,能极大的提高Lucene检索的命中率。
下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases
安装方式一
1)/usr/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.13.0/elasticsearch-analysis-ik-7.13.0.zip
2)会提示 Continue with installation?输入 y 即可完成安装
3)chown -R es /usr/elasticsearch/ 因为安装ik分词器后在elasticsearch/plugins和/usr/elasticsearch/config下的analysis-ik目录所有者不是es用户
4)重启Elasticsearch 和Kibana
安装方式二
#新建analysis-ik文件夹
cd /usr/elasticsearch/plugins
mkdir analysis-ik
#切换至 analysis-ik文件夹下
cd analysis-ik
#上传资料中的
elasticsearch-analysis-ik-7.13.0.zip
#解压
unzip elasticsearch-analysis-ik-7.13.0.zip
#解压完成后删除
rm -rf elasticsearch-analysis-ik-7.13.0.zip
# 重启Elasticsearch 和Kibana
测试:
# ik_max_word (常用) 会将文本做最细粒度的拆分
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京市长江大桥"
}
# ik_smart 会做最粗粒度的拆分 (不走扩展词)
POST _analyze
{
"analyzer": "ik_smart",
"text": "南京市长江大桥"
}
扩展词典使用
进入到 elasticsearch/config/analysis-ik/(插件命令安装方式) 或 elasticsearch/plugins/analysis-ik/config(安装包安装方式) 目录下, 新增自定义词典
vim zkc_ext_dict.dic
输入 :江大桥
vim IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">zkc_ext_dict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords"></entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
#重启Elasticsearch
测试:
# ik_max_word (常用) 会将文本做最细粒度的拆分
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京市长江大桥"
}
#可以看到 江大桥
停用词典使用
进入到 elasticsearch/config/analysis-ik/(插件命令安装方式) 或 elasticsearch/plugins/analysis-ik/config(安装包安装方式) 目录下, 新增自定义词典
vim zkc_stop_dict.dic
输入 :市长
vim IKAnalyzer.cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>IK Analyzer 扩展配置</comment>
<!--用户可以在这里配置自己的扩展字典 -->
<entry key="ext_dict">zkc_ext_dict.dic</entry>
<!--用户可以在这里配置自己的扩展停止词字典-->
<entry key="ext_stopwords">zkc_stop_dict.dic</entry>
<!--用户可以在这里配置远程扩展字典 -->
<!-- <entry key="remote_ext_dict">words_location</entry> -->
<!--用户可以在这里配置远程扩展停止词字典-->
<!-- <entry key="remote_ext_stopwords">words_location</entry> -->
</properties>
#重启Elasticsearch
测试:
# ik_max_word (常用) 会将文本做最细粒度的拆分
POST _analyze
{
"analyzer": "ik_max_word",
"text": "南京市长江大桥"
}
#看不到 市长
同义词典使用
进入到 elasticsearch/config/analysis-ik/(插件命令安装方式) 或 elasticsearch/plugins/analysis-ik/config(安装包安装方式) 目录下, 新增自定义词典
vim synonym.txt
china,中国
meishibiexuejava,没事别学JAVA
#重启Elasticsearch
测试:
1)创建索引
PUT /zkc-es-synonym
{
"settings": {
"analysis": {
"filter": {
"word_sync": {
"type": "synonym",
"synonyms_path": "analysis-ik/synonym.txt"
}
},
"analyzer": {
"ik_sync_max_word": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_max_word"
},
"ik_sync_smart": {
"filter": [
"word_sync"
],
"type": "custom",
"tokenizer": "ik_smart"
}
}
}
},
"mappings": {
"properties": {
"name": {
"type": "text",
"analyzer": "ik_sync_max_word",
"search_analyzer": "ik_sync_max_word"
}
}
}
}
2)插入数据
POST /zkc-es-synonym/_doc/1
{
"name":"中国第一"
}
POST /zkc-es-synonym/_doc/2
{
"name":"没事别学JAVA"
}
3)使用同义词china或meishibiexuejava进行搜索
POST /zkc-es-synonym/_doc/_search
{
"query": {
"match": {
"name": "china"
}
}
}
POST /zkc-es-synonym/_doc/_search
{
"query": {
"match": {
"name": "meishibiexuejava"
}
}
}