关于 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://192.168.137.14:9200 -p 5601:5601 -d kibana:7.6.2
-
设置开机启动
docker update kibana --restart=always
测试 Kibana
-
访问 Kibana
http://[ip]:5601/app/kibana