乘风破浪,遇见云原生(Cloud Native)之Docker安装运行Elasticsearch v7.17.6/8.4.3、Kibana v7.17.6/8.4.3

科技网编2023-08-27 14:151700

什么是Elasticsearch

https://www.elastic.co/cn/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

https://www.elastic.co/cn/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许可分叉。

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

https://hub.docker.com/_/elasticsearch

主要版本

  • 8.4.3
  • 7.17.6
  • 6.8.23

创建实例

  1. 通过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
  1. 通过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

  • http://localhost:9200
  • https://localhost:9200

{
  "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

https://hub.docker.com/_/kibana

主要版本

  • 8.4.3
  • 7.17.6
  • 6.8.23

创建实例

  1. 通过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
  1. 通过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还需要完成授权验证

  • http://localhost:5601

授权验证

对8.x的版本需要做授权验证

这里直接填入上面获取到的Enrollment token值。

接下来会找你要个验证码。

这个验证码其实在这个实例有输出,如果你也是用Docker for Windows,直接点进实例可以看。

这一步验证通过后,就往后初始化了

进入到登陆界面,这时候账号密码和前面Elasticsearch是一致的。

验证安装

Kibana只是一套可视化面板,其数据来自Elasticsearch,我们从索引清单这里可以看到。

参考

  • elasticsearch on dockerhub
  • kibana on dockerhub
  • logstash on dockerhub
  • docker network命令详解
  • Install Elasticsearch with Docker
  • Docker --restart参数

评论区