快速入门指南:Elastic Stack for Devs

2025-06-10

快速入门指南:Elastic Stack for Devs

对 Elastic Stack 感到好奇?本快速指南将指导您完成设置,并导入我最喜欢的 dev.to 作者的文章,以便您试用!

Elasticsearch 是一个开源、可扩展的全文搜索和分析引擎。它用途广泛,从全文搜索到电子商务,再到实时分析。它经常与大型组织和大数据联系在一起,但 Elastic 的默认配置也非常出色,因此对于小型项目来说也同样适用。

在本指南中,我们将搭建一个基础版 Elastic Stack(之前称为“ELK Stack”),它整合了几个旨在协同工作的开源服务。以下是这些服务的简要描述:

Elasticsearch是一个持久化引擎和 API 层。Logstash是一个基于插件的数据导入工具。Kibana一个用于探索和管理的 GUI 管理界面

如果您更喜欢观看而不是阅读,我还录制了一段视频:

包含开发者博客数据的 Elastic Stack 屏幕截图

先决条件

本指南需要 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]}"
  }
}
Enter fullscreen mode Exit fullscreen mode

就这样,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",
            }
          }
        }
      ]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

简单聚合,按日期发布

GET /blogs/_search?size=0
{
  "aggs":{
    "posts by date":{
      "date_histogram":{
        "field":"published",
        "interval":"year"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

组合聚合/过滤器:Elasticsearch 的前 10 个结果,按作者排序

GET /blogs/_search
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "message": "Elasticsearch"
          }
        }
      ]
    }
  },
  "aggs": {
    "author": {
      "terms": {
        "field": "author.keyword"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

现在您已经启动并运行了 Elastic Stack,这里有一些关于应该做什么的建议:

包含开发者博客数据的 Elastic Stack 屏幕截图

故障排除:(非常感谢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
PREV
学习创建视频游戏
NEXT
Weatherify:一款使用 React 构建的天气应用。💙 大家好!希望你们一切顺利。欢迎提出建议和反馈。😄