ElasticSearch 目前也算是非常火了,站内搜索、日志分析都会用到它,而且还可以直接当成 NoSQL 数据库来使用。
接下来,我们就通过下面这个简单介绍,开启 es 之旅吧~
公众号 : 倔强小狮子
文章目录
1. Lucene
- 小伙伴们如果对于Lucene进行不熟悉的不用担心,学不会ElasticSearch, 建议说一下Lucene再进行学西ElasticSearch理解会轻松一些
- Lucene 是一个开源、免费、高性能、纯 Java 编写的全文检索引擎,可以算作是开源领域最好的全文检索工具包。
在实际开发中,Lucene 几乎适用于任何需要全文检索的场景,所以 Lucene 先后发展出好多语言版本,例如 C++、C#、Python 等。
早在 2005 年,Lucene 就升级为 Apache 顶级开源项目。它的作者是 Doug Cutting,有的人可能没听过这这个人,不过你肯定听过他的另一个大名鼎鼎的作品 Hadoop。
不过需要注意的是,Lucene 只是一个工具包,并非一个完整的搜索引擎,开发者可以基于 Lucene 来开发完整的搜索引擎。比较著名的有 Solr、ElasticSearch,不过在分布式和大数据环境下,ElasticSearch 更胜一筹。
Lunce的核心:创建索引和搜索索引
1.2 Lucene 主要有如下特点:
- 简单
- 跨语言
- 强大的搜索引擎
- 索引速度快
- 索引文件兼容不同平台
1.2 ElasticSearch (步入)
1.2.1 介绍
- ElasticSearch 是一个分布式、可扩展、近实时性的高性能搜索与数据分析引擎。
- Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。
- ElasticSearch 在分布式环境下表现优异,这也是它比较受欢迎的原因之一。它支持 PB 级别的结构化或非结构化海量数据处理
1.2.2 Elasticsearch有多火?
搜索是现代软件必备的一项基础功能,而 Elasticsearch 就是一款功能强大的开源分布式搜索与数据分析引擎。
它可以从海量数据中快速找到相关信息,在同领域内几乎没有竞争对手——近两年 DBRanking 的数据库评测中,ES 在搜索引擎领域始终位列第一。
当你在 GitHub 上搜索时,Elasticsearch 可以实现代码级的搜索与高亮显示 ;当你在网上购物时,ES 可为你推荐喜欢的商品;当你下班打车回家时,ES 可以通过定位附近的乘客和司机,帮助平台优化调度。
Elasticsearch 还被广泛运用于大数据近实时分析,包括日志分析、指标监控、信息安全等多个领域。
作为目前最流行的开源搜索引擎,ES 在全球的下载量已超过 3.5 亿次,腾讯、滴滴、今日头条、饿了么、360 安全、小米,vivo 等国内诸多知名公司都在使用 Elasticsearch。
2.1 单节点安装
注意 : 6.7x 版本之前和之后变化有点大, 建议各位按照 本教程 7.11.1 安装,防止遇到问题
2.1.1 下载
- 首先打开 Es 官网,找到 Elasticsearch: https://www.elastic.co/cn/elasticsearch/ 进入该网站进行下载即可,全程基于 Centos8演示
- 将下载的文件解压,解压后的目录含义如下:
目录 | 含义 |
---|---|
modules | 依赖模块目录 |
lib | 第三方依赖库 |
logs | 输出日志目录 |
plugins | 插件目录 |
bin | 可执行文件目录 |
config | 配置文件目录 |
data | 数据存储目录 |
2.1.2 启动方式
-
进入到 bin 目录下,直接执行 ./elasticsearch 启动即可。
-
注意: 将提示不能使用 root用户启动,创建其他个人用户, 将elasticsearch 赋予 777 权限 或 elasticsearch文件夹赋予个人用户 777 权限 (chome -R 777 elasticsearch / chown -R 777 user)
-
默认监听的端口是 9200,所以浏览器直接输入 localhost:9200 可以查看节点信息。9200该端口可在 config/elasticsearch.yml 进行修改
友情提示: 我使用的时服务器进行学习的时候,发现启动es启动成功后,安全组也放行该9200该端口,但是无法访问, 注意修改 elasticsearch.yml 中 network.host: 0.0.0.0 (注意空格)
-
打开 config/elasticsearch.yml 文件,可以配置集群名称以及节点名称
-
打开 config/elasticsearch.yml 文件,可以配置集群名称以及节点名称。配置方式如下:
cluster.name: lionet-cluster
node.name: master
- 节点的名字以及集群(默认是 elasticsearch)的名字,我们都可以自定义配置。
2.1.2 启动错误及解决方案
1 .修改 network.host: 0.0.0.0 启动错误
the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
- 解决方案
vim config/elasticsearch.yml 文件,添加一下行即可解决
cluster.initial_master_nodes: ["master"]
- 默认监听的端口是 9200,所以浏览器直接输入 localhost:9200 可以查看节点信息。
{
"name" : "master",
"cluster_name" : "lionet-cluster",
"cluster_uuid" : "bGOt2SPkTYmOtje-7OfIzg",
"version" : {
"number" : "7.11.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "ff17057114c2199c9c1bbecc727003a907c0db7a",
"build_date" : "2021-02-15T13:44:09.394032Z",
"build_snapshot" : false,
"lucene_version" : "8.7.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
- Es 支持矩阵:在进行使用 elasticsearch插件时严格使用该矩阵提示版本对应
- https://www.elastic.co/cn/support/matrix
3.1 HEAD 插件安装
Elasticsearch-head 插件,可以通过可视化的方式查看集群信息。
3.1.1 四个步骤(前提必须安装 node.js 环境 )
- git clone git://github.com/mobz/elasticsearch-head.git
- cd elasticsearch-head
- npm install
- npm run start
3.1.2 启动成功,页面如下
注意:
- 此时看不到集群数据。原因在于这里通过跨域的方式请求集群数据的,默认情况下,集群不支持跨域,所以这里就看不到集群数据。
- 解决办法如下,修改 es 的 config/elasticsearch.yml 配置文件,添加如下内容,使之支持跨域:
http.cors.enabled: true
http.cors.allow-origin: "*"
配置完成后,重启 es,此时 head 上就有数据了。
4 分布式安装
假设:
- 一主二从
- master 的端口是 9222 ,slave 端口分别是 9222 和 9223
4.1 master 节点配置
# 集群名
cluster.name: lionet-cluster
# 节点名称
node.name: master
# 是否允许该节点存储数据,默认开启
node.data: true
# # 是否可以成为master节点
node.master: true
network.host: 0.0.0.0
http.port: 9221 # client 交互port
transport.tcp.port: 9301 # cluster 进行交互
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
cluster.initial_master_nodes: ["master"]
bootstrap.system_call_filter: false
gateway.recover_after_nodes: 3
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
action.auto_create_index: true
4.2 slave 1
cluster.name: lionet-cluster
# 节点名称
node.name: node-1
# 是否允许该节点存储数据,默认开启
node.data: true
# # # 是否可以成为master节点
node.master: false
network.host: 0.0.0.0
http.port: 9222
transport.tcp.port: 9302
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
Block initial recovery after a full cluster restart until N nodes are started:
bootstrap.system_call_filter: false
gateway.recover_after_nodes: 3
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
action.auto_create_index: true
4.3 slave 2节点配置
cluster.name: lionet-cluster
node.name: node-2
#是否允许该节点存储数据,默认开启
node.data: true
#是否可以成为master节点
node.master: false
network.host: 0.0.0.0
http.port: 9223
transport.tcp.port: 9303
discovery.seed_hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]
bootstrap.system_call_filter: false
gateway.recover_after_nodes: 3
# 允许跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
action.auto_create_index: true
然后分别启动 master node-1 和 node-2 。启动后,可以在 head 插件上查看集群信息。
5 Kibana 安装
Kibana 是一个 Elastic 公司推出的一个针对 es 的分析以及数据可视化平台,可以搜索、查看存放在 es 中的数据。
安装步骤如下:
-
下载 Kibana:https://www.elastic.co/cn/downloads/kibana
-
解压
-
配置 es 的地址信息(可选,如果 es 是默认地址以及端口,可以不用配- 置,具体的配置文件是 config/kibana.yml)
-
执行 ./bin/kibana 文件启动
-
访问 ip :5601
Kibana 安装好之后,首次打开时,可以选择初始化 es 提供的测试数据,也可以不使用。
作者:专业于写这些入门到深层知识,提升我们的基本功,期待你的关注,和我一起学习
转载说明:未获得授权,禁止转载