乘风破浪,遇见云原生(Cloud Native)之Docker安装运行Elasticsearch v7.17.6/v8.4.3、Kibana v7.17.6/v8.4.3
什么是Elasticsearch
Elasticsearch是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎,具有HTTP Web接口和无模式JSON文档。Elasticsearch是用Java开发的,并在Apache许可证下作为开源软件发布。官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。
历史
Shay Banon在2004年创造了Elasticsearch的前身,称为Compass。在考虑Compass的第三个版本时,他意识到有必要重写Compass的大部分内容,以“创建一个可扩展的搜索解决方案”。因此,他创建了“一个从头构建的分布式解决方案”,并使用了一个公共接口,即HTTP上的JSON,它也适用于Java以外的编程语言。Shay Banon在2010年2月发布了Elasticsearch的第一个版本。
Elasticsearch BV成立于2012年,主要围绕Elasticsearch及相关软件提供商业服务和产品。2014年6月,在成立公司18个月后,该公司宣布通过C轮融资筹集7000万美元。这轮融资由新企业协会(NEA)牵头。其他投资者包括Benchmark Capital和Index Ventures。这一轮融资总计1.04亿美元。
2015年3月,Elasticsearch公司更名为Elastic。
Elastic Cloud是从2015年被Elastic收购的Found发展而来的,Elastic Cloud是由Elasticsearch驱动的SaaS产品系列,包括Elasticsearch服务,以及Elastic App搜索服务和Elastic网站搜索服务,这些服务都是由Elastic收购Swiftype发展而来的。2017年底,Elastic与谷歌创建了合作关系,在GCP中提供Elastic Cloud,而阿里巴巴则在阿里云中提供Elasticsearch和Kibana。2019年5月,Elastic宣布与腾讯云创建全球合作伙伴关系。
在2018年6月,Elastic提交了首次公开募股申请,估值在15亿到30亿美元之间。公司于2018年10月5日在纽约证券交易所挂牌上市。
2019年年底,Elasticsearch出现大量数据泄露事件,有27亿个电子邮件地址,10亿个电子邮件帐户密码以及近80万份出生证明遭到泄露。
特性
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。”Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。
Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。
另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。
什么是Kibana
Kibana是一个用于Elasticsearch的源码可用的数据可视化仪表盘软件,其在OpenSearch中的免费和开源的继任者是OpenSearch Dashboards。
历史
它在Elasticsearch集群上索引的内容上提供可视化功能。用户可以在大量的数据上创建条形图、线形图和散点图,或者饼图和地图。
Kibana还提供了一个被称为Canvas的演示工具,允许用户创建幻灯片,直接从Elasticsearch中获取实时数据。
Elasticsearch、Logstash和Kibana的组合被称为 "Elastic Stack"(以前是 "ELK stack"),可作为产品或服务提供。Logstash为Elasticsearch提供输入流,用于存储和搜索,Kibana访问数据用于可视化,如仪表盘。Elastic还提供 "Beats "包,可配置为提供有关各种数据库和应用技术的预制Kibana可视化和仪表盘。
2019年12月,Elastic推出Kibana Lens产品。
2021年5月,OpenSearch发布了OpenSearch Dashboards的第一个测试版,这是在Elastic停止开源项目并转向专有软件开发后,由Amazon Web Services赞助的Kibana的Apache许可分叉。
什么是Logstash
Logstash是一个开源的数据收集引擎,具有实时管道功能。Logstash可以动态地统一来自不同来源的数据,并将数据规范化到你选择的目的地。
采集是通过一些可配置的输入插件完成的,包括原始套接字/包通信、文件尾随和几个消息总线客户端。一旦一个输入插件收集了数据,它就可以被任何数量的过滤器处理,这些过滤器修改和注释事件数据。最后,事件被路由到输出插件,输出插件可以将事件转发到各种外部程序,包括Elasticsearch、本地文件和几个消息总线的实现。
Docker创建一个公共网络
docker network create elastic
其他命令包括
docker network create
docker network ls
docker network connect
docker network rm
docker network disconnect
docker network inspect
Docker安装运行Elasticsearch
主要版本
- 8.4.3
- 7.17.6
- 6.8.23
创建实例
- 通过Docker来创建Elasticsearch实例(开发环境)
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:8.4.3
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.6
- 通过Docker来创建Elasticsearch实例(生产环境)
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.4.3
docker run -d --name elasticsearch --net elastic --restart unless-stopped -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.6
访问信息
如果是7.x可以使用HTTP,如果是8.x必须使用HTTPS
{
"name" : "8b8d3440d83b",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "oSZLS2oDT4i2_ta71d77Lg",
"version" : {
"number" : "7.17.6",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "f65e9d338dc1d07b642e14a27f338990148ee5b6",
"build_date" : "2022-08-23T11:08:48.893373482Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
授权信息
默认账户名是:elastic
如果是8.x需要重置下密码
docker exec -it elasticsearch /bin/bash
cd bin
elasticsearch-reset-password -u elastic
Y
8.x还需要生成一个后续Kibana链接使用的Enrollment token
elasticsearch-create-enrollment-token -s kibana
Docker安装运行Kibana
主要版本
- 8.4.3
- 7.17.6
- 6.8.23
创建实例
- 通过Docker来创建Kibana实例(开发环境)
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 kibana:8.4.3
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 kibana:7.17.6
- 通过Docker来创建Kibana实例(生产环境)
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 docker.elastic.co/kibana/kibana:8.4.3
docker run -d --name kibana --net elastic --restart unless-stopped -p 5601:5601 docker.elastic.co/kibana/kibana:7.17.6
访问信息
如果是7.x可以直接进来,如果是8.x还需要完成授权验证
授权验证
对8.x的版本需要做授权验证
这里直接填入上面获取到的Enrollment token
值。
接下来会找你要个验证码。
这个验证码其实在这个实例有输出,如果你也是用Docker for Windows,直接点进实例可以看。
或者通过命令docker logs -f kibana
查看。
这一步验证通过后,就往后初始化了
进入到登陆界面,这时候账号密码和前面Elasticsearch是一致的。
验证安装
Kibana只是一套可视化面板,其数据来自Elasticsearch,我们从索引清单这里可以看到。
Docker安装运行Logstash
主要版本
- 8.4.3
- 7.17.6
- 6.8.23
创建实例
- 通过Docker来创建Logstash实例(开发环境)
docker run -d --name logstash --restart unless-stopped logstash:8.4.3
docker run -d --name logstash --restart unless-stopped logstash:7.17.6