ElasticSearch
来自百度百科:
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
ELK传送门
ES官网:https://www.elastic.co/cn/elasticsearch/
ES相关概念
NRT(Near Realtime) 近实时
cluster 集群
Node 节点(集群中的一台服务器)
index 索引(类似于Mysql中的一个数据库)
type 类型(类似于数据库中的一张表)
document 文档(类似于表中的一条数据)
Field 字段(一条数据中的一列,一个字段)
shard 分片(ES把一个index里面的数据,分为多个shard,分布式的存储在各个服务器上面)
replica 副本(ES集群中,一模一样的数据有多份,能正常提供查询和插入的分片叫做 primary shard,其余的管它们叫做 replica shard(备份的分片))
ES单机版安装
# 下载elasticsearch安装包
wget 下载或上传安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.1-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.2.1-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.2.1-linux-x86_64.tar.gz.sha512
tar -xzf elasticsearch-7.2.1-linux-x86_64.tar.gz
cd elasticsearch-7.2.1/
修改配置文件./config/elasticsearch.yml
cluster.name: my-application
node.name: node-1
path.data: /path/elasticsearch/data
path.logs: /path/elasticsearch/logs
network.host: 192.168.75.131
http.port: 9200
discovery.seed_hosts: ["192.168.75.130:9300"]
cluster.initial_master_nodes: ["node-1"]
启动服务:./bin/elasticsearch
1. 报错:不能以root用户启动(解决:新建其他用户并授权,用其他用户启动)
创建普通用户
groupadd elastic
useradd elastic -g elastic
passwd elastic
把各种es相关目录关联给elastic用户
chown -R elastic:elastic /path # es安装目录/日志目录
2. 报错:[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]。。。
编辑 /etc/security/limits.conf,追加以下内容;
* soft nofile 65536
* hard nofile 65536
* soft nproc 5000
* hard nproc 5000
编辑/etc/sysctl.conf,追加:
vm.max_map_count=655360
执行:sysctl -p
重启服务器
3. AccessDeniedException: /path/data/nodes (日志或数据存储目录权限缺失)
授权:chown -R elastic:elastic /path
启动elasticsearch
验证成功:访问9200端口
http://192.168.75.130:9200/
查看健康状态:
http://192.168.75.130:9200/_cluster/health?pretty
ElasticSearch 单机模式设置密码
vi /etc/elasticsearch/elasticsearch.yml
添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
重启:
sudo systemctl restart elasticsearch.service
cd /usr/share/elasticsearch/bin/
./elasticsearch-setup-passwords interactive
(为用户elastic, kibana, logstash_system,beats_system设置密码)
Kibana
ElastciSearch的数据查询展示界面。
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
Kibana安装
# 下载kibana的npm
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.2.0-x86_64.rpm
# 检查版本
shasum -a 512 kibana-7.2.0-x86_64.rpm
# 安装
sudo rpm --install kibana-7.2.0-x86_64.rpm
配置外网访问
/etc/kibana/kibana.yml
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://192.168.1.1:9200","http://192.168.1.2:9200","http://192.168.1.3:9200"]
加入开机启动
sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable kibana.service
启停
sudo systemctl start kibana.service
sudo systemctl stop kibana.service
Kibana安装后资源文件夹详情:
Kibana设置密码
vi /etc/kibana/kibana.yml
修改:
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
重启:
sudo systemctl restart kibana.service
附:linux开放端口
1、开启防火墙
systemctl start firewalld
2、开放指定端口
firewall-cmd --zone=public --add-port=1935/tcp --permanent
命令含义:
--zone #作用域
--add-port=1935/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
3、重启防火墙
firewall-cmd --reload
4、查看端口号
netstat -ntlp //查看当前所有tcp端口·
netstat -ntulp |grep 1935 //查看所有1935端口使用情况·