今天是教师节,让我们祝老师们节日快乐!
我们于2021/09/10 的学习目标是:Elasticsearch,核心任务为:
1、学习技术:
1)、Elasticsearch基本概念
2)、Lucene与Elasticsearch的关系
3)、Elasticsearch与Solr对比
4)、Elasticsearch与关系型数据库对比
5)、Elasticsearch部署与启动
6)、Elasticsearch插件
2、文档总结
1)、Elasticsearch基本概念
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
2)、Lucene与Elasticsearch的关系
Lucene是apache软件基金会 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。
Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
3)、Elasticsearch与Solr对比
Elasticsearch
优点:
- Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。
- Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。
- 处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。
- Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。
- 各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。
缺点:
- 还不够自动(不适合当前新的Index Warmup API,即冷启动/预热数据的方式。
- 当系统长期处于低水位的情况下,流量突然增加时,直接把系统拉升到高水位,可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮。)
Solr
优点:
- Solr有一个更大、更成熟的用户、开发和贡献者社区。
- 支持添加多种格式的索引,如:HTML、PDF、微软 Office 系列软件格式以及JSON、XML、CSV 等纯文本格式。
- Solr比较成熟、稳定。
- 不考虑建索引的同时进行搜索,速度更快。
缺点:
- 建立索引时,搜索效率下降,实时索引搜索效率不高。
4)、Elasticsearch与关系型数据库对比
对比:
- 一个ES集群可以包含多个索引(数据库)
- 每个索引又包含了很多类型(ES7中已作废)
- 类型中包含很多文档(行)
- 每个文档包含很多字段(列)
特点:
传统关系型数据库为特定列增加一个索引,例如B-Tree索引来加速检索。
Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。倒排索引来自于实际应用中需要根据属性的值来查找记录。这种索引表的每一项都包括一个属性值和具有该属性值的各记录地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而被称为倒排索引。
5)、Elasticsearch部署与启动
到Elasticsearch官网下载elasticsearch的tar.gz安装包
创建 es 目录
mkdir -p /usr/local/elasticsearch/es1
解压
tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz -C /usr/local/elasticsearch/es1/
修改配置文件elasticsearch-env
JAVA_HOME="/usr/local/elasticsearch/es1/elasticsearch-7.4.2/jdk/"
创建 es 用户组和 es 用户,并将其添加到用户组 es 中
(es 默认不允许 root 用户操作)
groupadd es
useradd es -g es
更改 es 文件夹及内部文件的所属用户及组为 es:es
chown -Rf es:es /usr/local/elasticsearch/
切换到 es 用户启动
su es
cd bin/elasticsearch
修改 config/elasticsearch.yml 文件
#学习时使用0.0.0.0放行所有IP,生产环境需配置允许访问的IP
network.host: 0.0.0.0
#在文件末尾添加如下信息
#添加集群发现配置
#指定可以成为Master的所有节点的name或者IP
discovery.seed_hosts: ["192.168.10.100"]
cluster.initial_master_nodes: ["192.168.10.100"]
切换至root用户添加防火墙规则,重启防火墙
su root -A INPUT -p tcp -m state --state NEW -m tcp --dport 9200 -j ACCEPT
systemctl restart iptables.service
切换es用户重启elasticsearch,重启之前先查询es进程然后杀死进程
kill -9 进程号
bin/elasticsearch -d
修改/etc/security/limits.conf文件
vi /etc/security/limits.conf
在文件末尾添加如下信息
es soft nofile 65535
es hard nofile 65535
es soft nproc 4096
es hard nproc 4096
修改/etc/sysctl.conf文件
#在文件末尾添加如下信息
vm.max_map_count = 262144
重新加载虚拟内存配置
sysctl -p
修改config/jvm.options文件
vi config/jvm.options
#注释CMS
#-XX:+UserConcMarkSweepGC
#使用G1
-XX:+UseG1GC
在浏览器访问192.168.10.100:9200
6)、Elasticsearch插件
可视化工具
- head
- cerebro
- elasticHD
KiBana
IK Analysis中文分词器