关于 Elasticsearch 和 Kibana
关于 Elasticsearch 和 Kibana
Elasticsearch
Elasticsearch 是什么?
Elasticsearch 是一个基于 Apache Lucene(TM) 的开源搜索引擎。无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
Elasticsearch 特性
-
分布式的实时文件存储,每个字段都被索引并可被搜索(搜索颗粒小)
-
分布式的实时分析搜索引擎——做不规则查询(搜索灵活)
-
可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据(搜索量大)
Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。
Elasticsearch 使用场景
-
为用户提供按关键字查询的全文搜索功能。
-
著名的 ELK 框架(Elasticsearch,Logstash,Kibana),实现企业海量日志的处理分析的解决方案。大数据领域的重要一份子。
全文检索(全部字段)、模糊查询(搜索)、数据分析(提供分析语法,例如聚合)
安装启动 Elasticsearch
es 使用 Java 进行开发,所以 es 的安装使用也需要使用 JDK,在安装 es 之前,需要先保证 JDK 的正常运行,同时保证 JDK 设置在系统环境变量当中。
es 可以单独的使用压缩包进行解压安装,但同时也可以使用 docker 进行安装,站在实际操作环境的角度中,以下选择 docker 进行安装。
- 下载 es
docker pull elasticsearch:7.6.2
- 配置 es
// 为了使用 docker 挂在 es 的文件
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >/mydata/elasticsearch/config/elasticsearch.yml
// 给予所有用户对 es 目录的操作权限(为了能够启动成功)
chmod -R 777 /mydata/elasticsearch/
- 启动 es
// 9200 端口是请求访问端口,9300 是集群中 es 之间的通信端口
// discovery.type=single-node 指的是以单节点启动
// ES_JAVA_OPTS="-Xms64m -Xmx512m" 设置 JVM 的内存大小
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
-v /mydata/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \
-v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.6.2
- 设置 es 在 docker 中为自启动
docker update elasticsearch --restart=always
测试 Elasticsearch
-
查看 es 版本信息:
http://[ip]:9200/ 输出: { "name": "0adeb7852e00", "cluster_name": "elasticsearch", "cluster_uuid": "9gglpP0HTfyOTRAaSe2rIg", "version": { "number": "7.6.2", "build_flavor": "default", "build_type": "docker", "build_hash": "ef48eb35cf30adf4db14086e8aabd07ef6fb113f", "build_date": "2020-03-26T06:34:37.794943Z", "build_snapshot": false, "lucene_version": "8.4.0", "minimum_wire_compatibility_version": "6.8.0", "minimum_index_compatibility_version": "6.0.0-beta1" }, "tagline": "You Know, for Search" }
-
显示 es 节点信息
http://[ip]:9200/_cat/nodes 输出: 127.0.0.1 76 95 1 0.26 1.40 1.22 dilm * 0adeb7852e00
初步检索
_CAT
- GET/cat/nodes:查看所有节点
http://[ip]:9200/_cat/nodes
输出:
127.0.0.1 61 91 11 0.08 0.49 0.87 dilm * 0adeb7852e00
注:*表示集群中的主节点
- GET/cat/health:查看es健康状况
http://[ip]:9200/_cat/health
输出:
1588332616 11:30:16 elasticsearch green 1 1 3 3 0 0 0 0 - 100.0%
注:green 表示健康值正常
- GET/cat/master:查看主节点
http://[ip]:9200/_cat/master
输出:
vfpgxbusTC6-W3C2Np31EQ 127.0.0.1 127.0.0.1 0adeb7852e00
- GET/_cat/indicies:查看所有索引 ,等价于 mysql 数据库的 show databases;
http://[ip]:9200/_cat/indices
输出:
green open .kibana_task_manager_1 KWLtjcKRRuaV9so_v15WYg 1 0 2 0 39.8kb 39.8kb
green open .apm-agent-configuration cuwCpJ5ER0OYsSgAJ7bVYA 1 0 0 0 283b 283b
green open .kibana_1 PqK_LdUYRpWMy4fK0tMSPw 1 0 7 0 31.2kb 31.2kb
Kibana
安装启动 Kibana
-
下载 Kibana。版本号需要和 es 一致
docker pull kibana:7.6.2
-
启动 Kibana
docker run --name kibana -e ELASTICSEARCH_HOSTS=http://[es ip]:[es port] -p 5601:5601 -d kibana:7.6.2
-
设置开机启动
docker update kibana --restart=always
测试 Kibana
-
访问 Kibana
http://[ip]:5601/app/kibana
设置密码
设置 ES 访问密码
-
修改 ES 配置文件 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
-
重启 ES
-
进入 ES 容器内部,执行设置用户密码的命令。一共有7个用户的密码
bin/elasticsearch-setup-passwords interactive
内容如下:
[root@node01 elasticsearch-7.7.0]# bin/elasticsearch-setup-passwords interactive future versions of Elasticsearch will require Java 11; your Java version from [/opt/app/jdk1.8.0_181/jre] does not meet this requirement Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. You will be prompted to enter passwords as the process progresses. Please confirm that you would like to continue [y/N]y Enter password for [elastic]: Reenter password for [elastic]: Enter password for [apm_system]: Reenter password for [apm_system]: Enter password for [kibana]: Reenter password for [kibana]: Enter password for [logstash_system]: Reenter password for [logstash_system]: Enter password for [beats_system]: Reenter password for [beats_system]: Enter password for [remote_monitoring_user]: Reenter password for [remote_monitoring_user]: Changed password for user [apm_system] Changed password for user [kibana] Changed password for user [logstash_system] Changed password for user [beats_system] Changed password for user [remote_monitoring_user] Changed password for user [elastic]
-
重新访问 ES。发现需要密码
设置 Kibana 密码
-
如果 docker 的 kibana 镜像没有挂载配置文件。那么就直接进入 kibana 容器内部
docker exec -it [container id/container name] /bin/bash
-
修改配置文件
# 进入修改界面 vi /config/kibana.yml # 添加配置。其中账号名为 kibana 的密码在上述的 ES 配置中有设置过 elasticsearch.username: "kibana" elasticsearch.password: "[密码]"
-
重启 Kibana。访问 Kibana,发现需要密码。账号密码都来自上述的 ES 的密码配置中。
同时,在进入到 Kibana 的页面后,也可以在 Security - Users 中对用户账号进行设置
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器