什么是ElasticSearch
ElasticSearch(简称ES)是一个开源的分布式搜刮和数据分析引擎,用Java开辟并且是当前最流行的开源的企业级搜刮引擎,可以或许到达近实时搜刮,它专门计划用于处理大规模的文本数据和实现高性能的全文检索。
优势
搜刮引擎的排名:
参考网站:DB-Engines Ranking - popularity ranking of search engines
作为排名第一的搜刮引擎,以下是一些 Elasticsearch 的优势:
- 分布式架构:Elasticsearch 采用分布式架构,可以轻松处理大规模数据,并支持水平扩展,提高体系的可扩展性和容错性。
- 全文检索功能:Elasticsearch 提供了强大的全文检索功能,可以对文本数据举行高效的搜刮和分析,支持复杂的查询语法和自界说分析器。
- 多语言支持:Elasticsearch 支持多种语言的数据处理和检索,可以满意差别语言环境下的搜刮需求。
- 高性能:Elasticsearch 采用了倒排索引等优化技能,可以或许实现高效的搜刮和数据处理性能,满意大规模数据的实时查询需求。
- 实时性:Elasticsearch 提供近乎实时的搜刮和分析功能,确保用户可以或许实时获取最新的数据和信息。
- 易用性:Elasticsearch 提供了丰富的 API 和插件,使得开辟者可以轻松集成和使用,同时其查询语法简洁明了,易于上手。
官方网站: Elastic — The Search AI Company | Elastic
下载地点:Past Releases of Elastic Stack Software | Elastic
生态先容
Elastic Stack由Logstash、Beats、ElasticSearch和Kibana 四大焦点产品组成,在数据收罗、存储、分析及数据可视化方面有着无可比拟的优势。
作为Elastic Stack的基石,Elasticsearch是一个高度可扩展的开源全文搜刮与分析引擎。它利用分布式架构提供近乎实时的数据搜刮、分析和可视化能力。Elasticsearch通过其强大的索引和查询功能,可以或许处理PB级的数据量,支持复杂的数据分析和挖掘需求,是构建现代数据驱动应用的理想选择。
Logstash是一个灵活的服务器端数据处理管道,可以或许同时从多个源收罗数据,转换数据然后将数据发送到您指定的目的地。它支持丰富的插件生态体系,使得数据网络、解析和转换过程变得高效且易于配置。Logstash在Elastic Stack中饰演着数据预处理和传输的关键脚色,确保数据以正确的格式和布局进入Elasticsearch,为后续的分析和可视化提供坚实的底子。
Beats是一个轻量级的数据收罗器家族,专为发送数据到Logstash、Elasticsearch或Kafka等目的地而计划。每个Beat都是一个独立运行的守护进程,用于从体系或应用步调中网络数据,并将这些数据转发到指定的数据网络和处理体系中。Beats家族包括Filebeat(用于文件日志)、Metricbeat(用于体系和应用性能指标)、Heartbeat(用于监控服务可用性)等多个成员,它们共同构成了强大的边沿数据收罗网络,覆盖了广泛的监控和日志网络需求。
Kibana是Elastic Stack的可视化和管理界面,为Elasticsearch数据提供了强大的可视化功能。通过Kibana,用户可以轻松创建仪表板、图表和地图,以直观的方式展示Elasticsearch中的数据。此外,Kibana还提供了交互式查询和过滤功能,使用户可以或许深入挖掘数据,发现隐蔽的趋势和模式。作为Elastic Stack的用户界面,Kibana使得数据分析变得更加直观、便捷和高效。
应用场景
只要用到搜刮的场景,Elasticsearch几乎都可以是最好的选择。结合Kibana、Logstash、Beats,ElaticSearch可以用于全文检索、日志分析、商业智能场景。
全文检索
首先,Elasticsearch支持各类应用、网站等的全文搜刮,包括淘宝、京东等电商平台的搜刮
其次,它支持用户通过自界说打分、自界说排序、高亮等机制召回盼望的效果数据,通过跨机房/跨机架感知、异地容灾等策略,为用户提供高可用、高并发、低延时、用户体验好的搜刮服务。
很多着名企业,如阿里巴巴、腾讯、携程、滴滴出行、美团、字节跳动、贝壳找房等,都将Elasticsearch作为关键技能之一
日志分析
Elasticsearch支持的日志包含但不限于如下类型:
- 用户行为日志、应用日志等业务日志。
- 慢查询、异常探测等状态日志。
- Debug、Info、WARN、ERROR、FATAL等差别品级的体系日志。
很多着名企业,如58集团、唯品会、日志易、国投瑞银等,都使用Elasticsearch来快速分析和处理大量的日志数据,从而对业务运行状况举行实时的监控和故障排查。
商业智能场景
大型业务数据给电子商务、移动App开辟、广告媒体等范畴的企业的数据网络和数据分析带来了巨大的寻衅。而Elasticsearch具有布局化查询功能,能实现全文数据检索和聚合分析
很多着名企业的商业智能体系,如睿思BI、百度数据可视化Sugar BI、永洪BI等,都借助Elasticsearch资助企业更好地明白市场趋势、优化决策过程。
快速安装
官网地点:Install Elasticsearch with .zip on Windows | Elasticsearch Guide [8.14] | Elastic (windows安装)
Window安装
下载地点: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-windows-x86_64.zip
目录描述bin脚本文件,包括启动elasticsearch,安装插件,运行统计数据等config配置文件目录,如elasticsearch配置、脚色配置、jvm配置等。jdk7.x 以后特有,自带的 java 环境data默认的数据存放目录,包含节点、分片、索引、文档的所有数据,生产环境必要修改。libelasticsearch依靠的Java类库logs默认的日志文件存储路径,生产环境必要修改。modules包含所有的Elasticsearch模块,如Cluster、Discovery、Indices等。plugins已安装插件目录 2. 配置JDK环境
- ES比较耗内存,建议虚拟机4G或以上内存,jvm1g以上的内存分配
- 运行Elasticsearch,需安装并配置JDK。各个版本对Java的依靠 Support Matrix | Elastic
- 7.0开始,内置了Java环境。ES的JDK环境变量收效的优先级配置次序ES_JAVA_HOME>ES_HOME
- ES_JAVA_HOME:用于指定Elasticsearch使用的Java运行时环境的路径。启动Elasticsearch时,会检查ES_JAVA_HOME环境变量并使用
- ES_HOME:这个环境变量指定Elasticsearch的安装路径。它用于定位Elasticsearch的配置文件、插件和其他干系资源。
- 可以参考ES的环境文件elasticsearch-env.bat
windows下,设置ES_JAVA_HOME和ES_HOME的环境变量
3. 配置ElasticSearch
编辑config/elasticsearch.yml文件
关闭security安全认证
ES 8 默认是开启Security的,初学者便于快速上手,可以关闭Security。
4. 启动ElasticSearch服务
办理启动日志乱码问题
- #打开config/jvm.options 文件—>末尾添加
- -Dfile.encoding=GBK
复制代码 进入bin目录,点击elasticsearch.bat文件启动 ES 服务
注意:9300 端口为 Elasticsearch集群间组件的通信端口,9200 端口为浏览器访问的 http
打开浏览器(推荐使用谷歌浏览器),输入地点:http://localhost:9200,测试效果
Linux安装
准备linux安装环境: centos7
- # 注意:ES不允许使用root账号启动服务,如果你当前账号是root,则需要创建一个专有账户
- # 为elaticsearch创建用户
- adduser fox
- passwd fox
复制代码 通过fox用户登录,下载ElasticSearch并解压
- # centos7 通过fox用户进入
- wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.14.3-linux-x86_64.tar.gz
- tar -xzf elasticsearch-8.14.3-linux-x86_64.tar.gz
- cd elasticsearch-8.14.3/
-
- # 将ES安装包的所有者和组更改为fox用户
- chown -R fox:fox elasticsearch-8.14.3
复制代码 配置JDK环境(可选)
- # 进入fox用户主目录,比如/home/fox目录下,设置用户级别的环境变量
- vim .bash_profile
- #设置ES_JAVA_HOME和ES_HOME的路径
- export ES_JAVA_HOME=/home/fox/elasticsearch-8.14.3/jdk/
- export ES_HOME=/home/fox/elasticsearch-8.14.3
- #执行以下命令使配置生效
- source .bash_profile
复制代码 修改config/elasticsearch.yml配置文件
- vim elasticsearch.yml
-
- #配置节点对外提供服务的地址以及集群内通信的ip地址,默认为回环地址127.0.0.1 和[::1]
- #配置为0.0.0.0开启远程访问支持
- network.host: 0.0.0.0
- #指定节点为单节点,可以绕过引导检查 初学者建议设置为此开发模式
- discovery.type: single-node
-
- #初学者建议关闭security安全认证
- xpack.security.enabled: false
复制代码 配置JVM参数(可选
修改config/jvm.options配置文件,调整jvm堆内存大小
- vim jvm.options -Xms4g -Xmx4g
复制代码 配置的建议:
- Xms(JVM 启动时分配的最小堆内存)和Xms(JVM 在运行过程中可以或许分配的最大堆内存)设置成—样
- Xmx不要超过呆板内存的50%
- 不要超过30GB - A Heap of Trouble: Managing Elasticsearch's Managed Heap | Elastic Blog
6)启动ElasticSearch服务
- #注意:es默认不能用root用户启动
- #fox用户下启动ES
- bin/elasticsearch
-
- # -d 后台启动
- bin/elasticsearch -d
复制代码 打开本地浏览器(推荐使用谷歌浏览器),输入地点:http://192.168.65.47:9200 (换成linux环境对应的ip),测试效果如下:
开辟模式和生产模式
- 开辟模式:开辟模式是默认配置(未配置集群发现设置),如果用户只是出于学习目的,而引导检查会把很多用户挡在门外,所以ES提供了一个设置项discovery.type=single-node。此项配置为指定节点为单节点,可以绕过引导检查。
- 生产模式:当用户修改了有关集群的干系配置会触发生产模式,在生产模式下,服务启动会触发ES的引导检查大概叫启动检查(bootstrap checks)
- 引导检查就是在服务启动之前对一些告急的配置项举行检查
- 引导检查包括对JVM大小、内存锁、虚拟内存、最大线程数、集群发现干系配置等干系的检查,如果某一项大概几项的配置不公道,ES会拒绝启动服务,并且在开辟模式下的某些告诫信息会升级成错误信息输出。
- 这种设定固然增长了用户的使用门槛,但是避免了日后产生更大的问题。
常用配置参数
参考文档:Important Elasticsearch configuration | Elasticsearch Guide [8.14] | Elastic
当前节点所属集群名称,多个节点如果要组成同一个集群,那么集群名称肯定要配置成雷同。默认值elasticsearch,生产环境建议根据ES集群的使用目的修改成符合的名字。
当前节点名称,默认值当前节点摆设地点呆板的主机名,所以如果一台呆板上要起多个ES节点的话,必要通过配置该属性明确指定差别的节点名称。
配置数据存储目录,比如索引数据等,默认值 $ES_HOME/data,生产环境下剧烈建议摆设到另外的安全目录,防止ES升级导致数据被误删除。
配置日志存储目录,比如运行日志和集群健康信息等,默认值 $ES_HOME/logs,生产环境下剧烈建议摆设到另外的安全目录,防止ES升级导致数据被误删除。
配置ES启动时是否举行内存锁定检查,默认值true。
ES对于内存的需求比较大,一样平常生产环境建议配置大内存,如果内存不足,容易导致内存交换到磁盘,严重影响ES的性能。所以默认启动时举行相应大小内存的锁定,如果无法锁定则会启动失败。
如果该参数配置为true的话很大概导致无法锁定内存以致ES无法乐成启动,此时可以修改为false。
节点对外提供服务的地点以及集群内通信的ip地点,默认值为当前节点地点呆板的本机回环地点127.0.0.1 和[::1],这就导致默认环境下只能通过当前节点地点主机访问当前节点。
配置当前ES节点对外提供服务的http端口,默认 9200
节点通信端标语,默认 9300
配置参与集群节点发现过程的主机列表,说白一点就是集群中所有节点地点的主机列表,可以是具体的IP地点,也可以是可解析的域名。
- cluster.initial_master_nodes
配置ES集群初始化时参与master推举的节点名称列表,必须与node.name配置的同等。ES集群初次构建完成后,应该将集群中所有节点的配置文件中的cluster.initial_master_nodes配置项移除,重启集群大概将新节点加入某个已存在的集群时切记不要设置该配置项。
安装ES浏览器插件
Chrome下载Github下载
Chrome下载
Chrome下载Edge下载
可视化客户端Kibana安装
Kibana是一个开源分析和可视化平台,旨在与Elasticsearch协同工作。
参考文档:Quick start | Kibana Guide [8.14] | Elastic
下载地点:Past Releases of Elastic Stack Software | Elastic
- #windows
- https://artifacts.elastic.co/downloads/kibana/kibana-8.14.3-windows-x86_64.zip
- #linux
- wget https://artifacts.elastic.co/downloads/kibana/kibana-8.14.3-linux-x86_64.tar.gz
- tar -zxvf kibana-8.14.3-linux-x86_64.tar.gz
- cd kibana-8.14.3
复制代码 2. 修改Kibana.yml配置文件
- vim config/kibana.yml
- #指定Kibana服务器监听的端口号
- server.port: 5601
- #指定Kibana服务器绑定的主机地址
- server.host: "0.0.0.0"
- #指定Kibana连接到的Elasticsearch实例的访问地址
- elasticsearch.hosts: ["http://localhost:9200"]
- #将 Kibana 的界面语言设置为简体中文
- i18n.locale: "zh-CN"
复制代码 3. 运行Kibana
windows:直接执行kibana.bat
Linux:注意:kibana也必要非root用户启动
- #启动kibana服务
- bin/kibana
- #后台启动,并将日志写入到logs/kibana.log
- nohup bin/kibana > logs/kibana.log 2>&1 &
- #查询kibana进程
- netstat -tunlp | grep 5601
复制代码 4. 访问Kibana: http://localhost:5601
cat API
- /_cat/allocation #查看单节点的shard分配整体情况
- /_cat/shards #查看各shard的详细情况
- /_cat/shards/{index} #查看指定分片的详细情况
- /_cat/master #查看master节点信息
- /_cat/nodes #查看所有节点信息
- /_cat/indices #查看集群中所有index的详细信息
- /_cat/indices/{index} #查看集群中指定index的详细信息
- /_cat/segments #查看各index的segment详细信息,包括segment名, 所属shard, 内存(磁盘)占用大小, 是否刷盘
- /_cat/segments/{index}#查看指定index的segment详细信息
- /_cat/count #查看当前集群的doc数量
- /_cat/count/{index} #查看指定索引的doc数量
- /_cat/recovery #查看集群内每个shard的recovery过程.调整replica。
- /_cat/recovery/{index}#查看指定索引shard的recovery过程
- /_cat/health #查看集群当前状态:红、黄、绿
- /_cat/pending_tasks #查看当前集群的pending task
- /_cat/aliases #查看集群中所有alias信息,路由配置等
- /_cat/aliases/{alias} #查看指定索引的alias信息
- /_cat/thread_pool #查看集群各节点内部不同类型的threadpool的统计信息,
- /_cat/plugins #查看集群各个节点上的plugin信息
- /_cat/fielddata #查看当前集群各个节点的fielddata内存使用情况
- /_cat/fielddata/{fields} #查看指定field的内存使用情况,里面传field属性对应的值
- /_cat/nodeattrs #查看单节点的自定义属性
- /_cat/repositories #输出集群中注册快照存储库
- /_cat/templates #输出当前正在存在的模板信息
复制代码 安装中文分词插件
在线安装
以安装analysis-icu这个分词插件为例
analysis-icu功能:
- 基于ICU(International Components for Unicode)库,提供高级的文本分析和处理功能。
- 支持多语言和复杂的Unicode文本处理。
- 包含ICU分词器(ICU Tokenizer)和ICU标准化过滤器(ICU Normalizer)。
analysis-icu应用场景:
- 多语言文本分析,实用于处理各种语言的文本。
- 支持Unicode标准化和处理复杂字符。
- 提供高级的文本处理功能,如正则表达式替换、文本转换等。
- #查看已安装插件
- bin/elasticsearch-plugin list
- #安装插件
- bin/elasticsearch-plugin install analysis-icu
- #删除插件
- bin/elasticsearch-plugin remove analysis-icu
- # 注意:安装和删除完插件后,需要重启ES服务才能生效。
复制代码 测试分词效果
- POST _analyze
- {
- "analyzer":"icu_analyzer",
- "text":"中华人民共和国"
- }
复制代码
离线安装
本地下载相应的插件,解压,然后手动上传到elasticsearch的plugins目录,然后重启ES实例就可以了。
比如ik中文分词插件:GitHub - infinilabs/analysis-ik: |