快速入门指南:Elastic Stack for Devs
对 Elastic Stack 感到好奇?本快速指南将指导您完成设置,并导入我最喜欢的 dev.to 作者的文章,以便您试用!
Elasticsearch 是一个开源、可扩展的全文搜索和分析引擎。它用途广泛,从全文搜索到电子商务,再到实时分析。它经常与大型组织和大数据联系在一起,但 Elastic 的默认配置也非常出色,因此对于小型项目来说也同样适用。
在本指南中,我们将搭建一个基础版 Elastic Stack(之前称为“ELK Stack”),它整合了几个旨在协同工作的开源服务。以下是这些服务的简要描述:
Elasticsearch是一个持久化引擎和 API 层。Logstash是一个基于插件的数据导入工具。Kibana是一个用于探索和管理的 GUI 管理界面
。
如果您更喜欢观看而不是阅读,我还录制了一段视频:
先决条件
本指南需要 Docker,请查看此处了解安装说明。
如果您使用的是 Windows,那么我建议使用 Linux 容器(默认)并共享驱动器,以便 Docker 可以将您的 Elastic 数据保存到磁盘。
#1:构建架构
第一步是创建一个 docker-compose.yml 文件,用于描述你的服务如何组合在一起。本指南注重速度而非深度,因此我已经为你创建好了它。
只需克隆存储库并启动 Elastic Stack:
git clone https://github.com/codingblocks/simplified-elastic-stack.git
cd simplified-elastic-stack
docker-compose up -d
启动后,给 Elasticsearch 几秒钟时间来喘口气,然后您可以通过在浏览器中访问此 URL 来验证其状态:http://localhost:9200
注意:logstash 容器将快速关闭,因为它还没有任何事要做,所以让我们修复它!
#2:导入数据
现在我们将使用 Logstash 导入数据。您之前克隆的仓库已经包含一个自定义的 Dockerfile.Logstash 文件,因此让我们添加一个可以导入RSS源的输入插件。您只需将第二行添加到 Dockerfile.Logstash 中,如下所示:
FROM docker.elastic.co/logstash/logstash-oss:7.0.0
RUN bin/logstash-plugin install logstash-input-rss
现在让我们添加几个输入配置。每个“rss”块代表一个 RSS 源,每 3600 秒将导入到 Elasticsearch。将 config/logstash.conf 文件的内容替换为以下几行,Logstash 将处理剩下的工作。
您可以看到输入是我最喜欢的一些博客,配置为每小时轮询一次。输出设置了一个名为“blogs”的基本索引来保存数据。
更新 config/logstash.conf:
input {
rss {
url => "https://dev.to/feed/davefollett"
interval => 3600
}
rss {
url => "https://dev.to/feed/dance2die"
interval => 3600
}
rss {
url => "https://dev.to/feed/dotnetcoreblog"
interval => 3600
}
rss {
url => "https://dev.to/feed/kritner"
interval => 3600
}
rss {
url => "https://dev.to/feed/molly_struve"
interval => 3600
}
rss {
url => "https://dev.to/feed/rionmonster"
interval => 3600
}
rss {
url => "https://dev.to/feed/TheInfraDev"
interval => 3600
}
rss {
url => "https://dev.to/feed/thejoezack"
interval => 3600
}
}
output {
elasticsearch {
action => "index"
index => "blogs"
hosts => "elasticsearch:9200"
document_id => "%{[link]}"
}
}
就这样,Logstash 会处理剩下的一切。下次重启环境时,Logstash 将开始轮询并导入 feed 数据。
停止、重建,然后重启你的环境:
docker-compose down
docker-compose build
docker-compose up -d
docker-compose 运行后,让 Elasticsearch 休息一分钟,然后尝试在浏览器中访问此 URL 来查看是否有数据:http://localhost:9200/blogs/_search
#3:玩得开心!
现在一切都已设置完毕,是时候进行一些探索了。
如果您是 Elastic Stack 新手,我建议您先熟悉一下 Kibana。它已经在您的计算机上运行:http://localhost:5601
。请前往“开发工具”,尝试执行以下几个查询,以便了解 Elastic 的功能。
示例查询
简单过滤,获取去年关于 JavaScript 的前 5 篇文章
GET /blogs/_search?q=JavaScript&size=5
"query": {
"bool": {
"must": [
{
"range": {
"published": {
"gte" : "now-1y/y",
}
}
}
]
}
}
}
简单聚合,按日期发布
GET /blogs/_search?size=0
{
"aggs":{
"posts by date":{
"date_histogram":{
"field":"published",
"interval":"year"
}
}
}
}
组合聚合/过滤器:Elasticsearch 的前 10 个结果,按作者排序
GET /blogs/_search
{
"query": {
"bool": {
"must": [
{
"match": {
"message": "Elasticsearch"
}
}
]
}
},
"aggs": {
"author": {
"terms": {
"field": "author.keyword"
}
}
}
}
现在您已经启动并运行了 Elastic Stack,这里有一些关于应该做什么的建议:
- 建立一个简单的网站,让您浏览和搜索您喜欢的博客。
- 探索搜索和聚合API*使用 Kibana 创建可视化
故障排除:(非常感谢Dave Follett的帮助!)
- 在 Linux 上运行 Elasticsearch 容器时,它总是崩溃?你的 vm.max_map_count 可能太低了。查看以下链接获取解释/修复方法:https://www.elastic.co/guide/en/elasticsearch/reference/current/vm-max-map-count.html
- 容器使用遇到问题?“docker logs”和“docker inspect”会帮到你。你可以运行以下命令来查看所有 Elasticsearch 文件在磁盘上的位置:“docker inspect $(docker ps -f name=elasticsearch -aq)”
照片由 Nine Köpfer 在 Unsplash 上拍摄
鏂囩珷鏉ユ簮锛�https://dev.to/_codingblocks/quickstart-guide-elastic-stack-for-devs-580e