Elasticsearch:Open Crawler 发布技术预览版

作者:来自 Elastic Navarone Feekery

多年来,Elastic 已经经历了几次 Crawler 迭代。最初是 Swiftype 的 Site Search,后来发展成为 App Search Crawler,最近又发展成为 Elastic Crawler。这些 Crawler 功能丰富,允许以稳健而细致的方式将网站数据导入 Elasticsearch。但是,如果用户想在自己的基础设施上运行这些 Crawler,他们也需要运行整个企业搜索。企业搜索代码库非常庞大,包含许多不同的工具,因此用户无法选择只运行 Crawler。由于企业搜索是私有代码,因此用户也不完全清楚他们正在运行什么。

这一切都改变了,因为我们发布了最新版本的 Crawler:Open Crawler!

Open Crawler 允许用户从他们喜欢的任何位置抓取 Web 内容并将其索引到 Elasticsearch 中。使用 Elastic Cloud 没有任何要求,也不需要运行 Kibana 或企业搜索实例。只需要一个 Elasticsearch 实例即可将抓取结果导入其中。

这次的存储库也是开放代码。用户现在可以检查代码库、提交问题和 PR 请求,或者分支存储库进行更改并运行他们自己的爬虫变体。

有什么变化?

Open Crawler 比之前的 SaaS 爬虫轻量得多。该产品本质上是现有 Elastic Crawler 的核心爬虫代码,与企业搜索服务分离。分离 Open Crawler 意味着暂时放弃一些功能。如果你想阅读我们实现功能对等的路线图,本博客末尾有一个完整的功能比较表。我们打算重新引入这些功能,并在该产品成为正式发布时达到近乎功能对等。

这个过程还使我们能够对核心产品进行改进。例如:

  • 我们能够消除索引命名的限制
  • 现在可以在抓取和提取内容之前对索引使用自定义映射
  • 抓取结果现在也被批量索引到 Elasticsearch 中,而不是一次索引一个网页
    • 这提供了显着的性能提升,我们将在下面介绍

它与 Elastic Crawler 相比如何?

如前所述,此爬虫程序可以从你喜欢的任何地方运行;你的计算机、你的个人服务器或云托管服务器。它可以将文档索引到本地、云甚至无服务器的 Elasticsearch 中。你也不再需要使用企业搜索将你的网站内容导入 Elasticsearch。

但最令人兴奋的是,Open Crawler 也比 Elastic Crawler 更快。

我们进行了性能测试,以比较 Open Crawler 和我们的下一个最新爬虫程序 Elastic Crawler 的速度。这两个爬虫程序都爬取了网站 elastic.co,没有更改默认配置。Open Crawler 设置为在两个 AWS EC2 实例上运行;m1.small 和 m1.large,而 Elastic Crawler 则从 Elastic Cloud 本地运行。所有这些都设置在北弗吉尼亚州地区。内容被索引到具有相同设置的 Elasticsearch Cloud 实例中(默认 360 GB 存储 | 8 GB RAM | 最多 2.5 个 vCPU)。

结果如下:

Crawler TypeServer RAMServer CPUCrawl Duration (mins)Docs Ingested (n)
Elastic Crawler2GBup to 8 vCPU30543957
Open Crawler (m1.small)1.7 GB1 vCPU16056221
Open Crawler (m1.large)3.75 GB per vCPU2 vCPU10056221

对于 m1.small,Open Crawler 的速度几乎是后者的两倍,而对于 m1.large,速度则是后者的三倍多!

尽管运行在 vCPU 配置较少的服务器上,Open Crawler 的速度也同样快。Open Crawler 提取了大约 13000 多个文档,但这是因为 Elastic Crawler 将具有相同主体的网站页面合并为一个文档。此功能称为重复内容处理(duplicate content handling),详细描述位于本博客末尾的功能比较矩阵中。这里的要点是,即使提取的文档数量不同,这两个爬虫在各自的抓取过程中遇到的网页数量相同。

以下是一些图表,比较了这对 Elasticsearch 的影响。这些图表比较了 Elastic Crawler 和在 m1.large 实例上运行的 Open Crawler。

CPU

当然,Open Crawler 导致 Elastic Cloud 上的 CPU 使用率显著降低,但这是因为我们删除了整个企业搜索服务器。仍然值得快速查看一下此 CPU 使用率分布在哪里。

Elastic Crawler CPU 负载(Elastic Cloud)

打开爬虫 CPU 负载(Elastic Cloud)

Elastic Crawler 立即达到 CPU 阈值并持续使用了一个小时。然后它下降并出现周期性峰值,直到爬取完成。

对于 Open Crawler,Elastic Cloud 上几乎没有明显的 CPI 使用情况,但 CPU 仍在某处被消耗,在我们的例子中,这是在 EC2 实例上。

EC2 CPU 负载 (m1.large)

我们在这里可以看到,Open Crawler 没有达到 100% 的限制阈值。它使用的最高 CPU 为 84.3%。这意味着这里还有更多的优化空间。根据用户设置(以及我们可以添加到代码库的优化),Open Crawler 可能会更快。

请求数 (n)

通过比较抓取期间发出的请求数,我们可以看到 Elasticsearch 服务器负载的真正变化。

Elastic Crawler 请求数

Open Crawler 请求:

Open Crawler 对索引请求的影响非常小,与背景噪音相比,在这张图上甚至无法察觉。索引请求略有增加,搜索请求没有变化。

与此同时,Elastic Crawler 的请求激增;特别是搜索请求。

这意味着对于想要减少对其 Elasticsearch 实例的请求的用户来说,Open Crawler 是一个很好的解决方案。

那么为什么它的速度会快这么多呢?

1) Open Crawler 发出的索引请求明显更少。

Elastic Crawler 每次只对一个爬取结果进行索引。这样做是为了实现重复内容管理等功能。这意味着 Elastic Crawler 在爬取过程中执行了 43,957 个文档索引请求。它还会在遇到重复内容时更新文档,因此它还执行了超过 13,000 个单独的更新请求。

Open Crawler 反而会汇集爬取结果并批量对其进行索引。在此测试中,它仅在 604 个大小各异的批量请求中就索引了相同数量的爬取结果。这不到所发出索引请求的 1.5%,这大大降低了 Elasticsearch 的管理负载。

2)Elastic Crawler 还执行许多搜索请求,进一步降低了性能

Elastic Crawler 的配置和元数据在 Elasticsearch 伪系统(pseudo-system)索引中进行管理。在爬取时,它会定期检查此配置并更新其中一些索引的元数据,这是通过进一步的 Elasticsearch 请求完成的。

Open Crawler 的配置完全在 yaml 文件中管理。它也不会跟踪 Elasticsearch 索引上的元数据。它对 Elasticsearch 发出的唯一请求是在抓取网站时从抓取结果中索引文档。

3)Open Crawler 对抓取结果的处理较少

在 Open Crawler 的技术预览阶段,有许多功能尚未提供。在 Elastic Crawler 中,这些功能均通过 Elasticsearch 中的伪系统索引进行管理。当我们将这些功能添加到 Open Crawler 时,我们可以确保它们以不涉及多次向 Elasticsearch 发出请求以检查配置的方式完成。这意味着即使在达到与 Elastic Crawler 几乎相同的功能后,Open Crawler 仍应保持这种速度优势。

我如何使用它?

你现在可以克隆存储库并按照此处的文档开始使用。如果你不更改源代码,我建议使用 Docker 来运行 Open Crawler,以使过程更顺畅。

如果你想将抓取结果索引到 Elasticsearch 中,你还可以试用 Elasticsearch on Cloud 的免费试用版或自行从网站下载并运行 Elasticsearch。

这是抓取网站 parksaustralia.gov.au 的快速演示。此操作的要求是 Docker、Open Crawler 存储库的克隆/分叉以及正在运行的 Elasticsearch 实例。

1. 构建 Docker 映像并运行它

这可以在一行中完成,使用 docker build -t crawler-image . && docker run -i -d --name crawler crawler-image。

docker build -t crawler-image . && docker run -i -d --name crawler crawler-image。

然后,你可以使用 CLI 命令检查版本,确认它正在运行:

docker exec -it crawler bin/crawler version

2. 配置爬虫

使用存储库中的示例,你可以创建一个配置文件。在这个例子中,我正在爬取网站 parksaustralia.org.au 并将其索引到基于云的 Elasticsearch 实例中。

这是我的配置示例,我创造性地将其命名为 example.yml。

example.yml

domain_allowlist:- https://parksaustralia.gov.au
seed_urls:- https://parksaustralia.gov.au
output_sink: elasticsearch
output_index: elastic-crawler-test-2
max_crawl_depth: 2elasticsearch:host: "https://myinstance.eu-north1.gcp.elastic-cloud.com"port: "443"username: "elastic"password: "realpassword"

可以使用以下方式将其复制到 docker 容器中:

ocker cp config/example.yml crawler:/app/config/example.yml

4. 爬取!

使用 docker exec -it crawler bin/crawler crawl config/example.yml 开始爬取。

docker exec -it crawler bin/crawler crawl config/example.yml

如果站点很大,则需要一段时间才能完成,但你会根据 shell 输出知道它已完成。

5. 检查内容

然后我们可以针对索引执行 _search 查询。如果你有一个正在运行的实例,也可以在 Kibana Dev Tools 中执行此操作。

curl -X GET "https://myinstance.eu-north1.gcp.elastic-cloud.com:443/elastic-crawler-test-2/_search" \
-H 'Content-Type: application/json' \
-u elastic:realpassword \
-d'
{"_source": ["url", "title", "body_content"],"size": 1,"query": {"match": {"title": "Uluru"}}
}
' | jq '.hits.hits[]._source'

还有结果!

你甚至可以将这些结果与语义搜索联系起来,并进行一些很酷的真实语言查询,例如澳大利亚中心的公园是什么?你只需将你创建的管道的名称添加到 Crawler 配置 yaml 文件的 elasticsearch.pipeline 字段下。

功能比较细分

以下是截至 v8.13 的 Elastic Crawler 功能的完整列表,以及我们打算将它们添加到 Open Crawler 的时间。技术预览中提供的功能已经可用。

这些与任何特定的堆栈版本无关,但我们为每个版本设定了一个大致的时间。

  • 技术预览:今天(2024 年 6 月)
  • 测试版:2024 年秋季
  • GA:2025 年夏季
FeatureOpen CrawlerElastic Crawler
Index content into Elasticsearchtech-preview
No index name restrictionstech-preview
Run anywhere, without Enterprise Search or Kibanatech-preview
Bulk index resultstech-preview
Ingest pipelinestech-preview
Seed URLstech-preview
robots.txt and sitemap.xml adherencetech-preview
Crawl through proxytech-preview
Crawl sites with authorizationtech-preview
Data attributes for inclusion/exclusiontech-preview
Limit crawl depthtech-preview
Robots meta tagstech-preview
Canonical URL link tagstech-preview
No-follow linkstech-preview
CSS selectorsbeta
XPath selectorsbeta
Custom data attributesbeta
Binary content extractionbeta
URL pattern extraction (extraction directly from URLs using regex)beta
URL filters (extraction rules for specific endpoints)beta
Purge crawlsbeta
Crawler results history and metadataGA
Duplicate content handlingTBD
Schedule crawlsTBD
Manage crawler through Kibana UITBD

由于我们正在评估 Open Crawler 的未来,因此 TBD 功能仍未确定。其中一些功能(如计划抓取)已经可以使用 cron 作业或类似的自动化功能完成。根据用户反馈以及 Open Crawler 项目的发展情况,我们可能会决定在以后的版本中正确实现这些功能。如果你需要其中之一,请联系我们!你可以在论坛和社区 Slack 中找到我们,也可以直接在存储库中创建问题。

下一步是什么?

我们希望在 v9.0 中及时将其发布为正式版。Open Crawler 的设计考虑到了 Elastic Cloud Serverless,我们打算让它成为该版本的主要 Web 内容提取方法。

我们还计划支持 Elastic 数据提取服务,因此可以使用 Open Crawler 提取更大的二进制内容文件。

与此同时,我们需要引入许多功能,以获得与 Elastic Crawler 目前相同的功能丰富的体验。

你可以使用来自任何来源的数据构建搜索。查看此网络研讨会,了解 Elasticsearch 支持的不同连接器和来源。
准备好自己尝试一下了吗?开始免费试用。

原文:Open Crawler released for tech-preview — Elastic Search Labs

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/25673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鞠小云张霖浩闪耀北京广播电视台春晚发布会,豪门姐弟感爆棚

昨日,2025年北京广播电视台“追梦春晚”全国海选发布会在杭州举行,中国内地青年女演员鞠小云同人气幕后张霖浩,受主办方盛情邀请出席本次活动。从现场流露出的照片中可以看出,鞠小云一袭白色长裙灵动温婉素雅,而张霖浩…

27.机会成本

上海市计算机学会竞赛平台 | YACSYACS 是由上海市计算机学会于2019年发起的活动,旨在激发青少年对学习人工智能与算法设计的热情与兴趣,提升青少年科学素养,引导青少年投身创新发现和科研实践活动。https://www.iai.sh.cn/problem/677 题目描述 明天有 𝑛n 门考试,今晚只…

C++——计算不同的非空子串个数

计算不同的非空子串 计算方法 这道题是我在BCSP-X小高组的题目中发现的一道 没事闲的就写了代码和思路&#xff1a; 代码 #include <iostream> #include <vector> #include <string> #include <algorithm>using namespace std;// 用于存储后缀数…

[职场] 缺点范文 #知识分享#经验分享#媒体

缺点范文 回答示范1&#xff1a; 我的公开演讲能力比较差&#xff0c;在公共场合讲话的时候我会感到紧张&#xff0c;不过谈论我熟悉的领域我会比较放松。所以当我需要做公开发言的时候&#xff0c;我必须要准备得很充分。我确实羡慕那些无论什么话题都能够高谈阔论的人。 回…

Docker与Docker-Compose详解

1、Docker是什么&#xff1f; 在计算机中&#xff0c;虚拟化(英语: Virtualization) 是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实体结构间的不可切割的障碍&…

【SpringBoot + Vue 尚庭公寓实战】基本属性接口实现(七)

【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09; 文章目录 【SpringBoot Vue 尚庭公寓实战】基本属性接口实现&#xff08;七&#xff09;1、保存或更新属性名称2、保存或更新属性值3、查询全部属性名称和属性值列表4、根据ID删除属性名称5、根据…

QSS 自定义QCheckBox

Qt Style Sheets are a powerful mechanism that allows you to customize the appearance of widgets . 简述 QCheckBox支持盒子模型。子控件::indicator可以定义指示器样式。默认情况下指示器在内容矩形框的左上角。属性spacing指定指示器和文本之间的间距。 效果 样式表 …

内网穿透的方式有哪些——快解析的优势

外网穿透内网技术&#xff0c;即内网映射&#xff0c;是把目标本地内网地址和端口发布到互联网&#xff0c;是一种由内网开放到外网的权限操作。那么&#xff0c;内网穿透的方法有哪些呢&#xff1f;做映射外网的方法。需要结合自己本地网络环境和应用场景来实施。这里分享三种…

OpenGauss数据库-5.数据更新

第1关&#xff1a;插入数据 gsql -d postgres -U gaussdb -W "passwd123123" create table student (id integer primary key,name char(20),age integer ); insert into student values(1,"lily",20),(2,lily,21),(3,marry,19); 第2关&#xff1a;删除数…

汇编:数组定义数据填充

数组的定义 在32位汇编语言中&#xff0c;定义数组时&#xff0c;通常使用定义数据指令&#xff08;如 DB, DW, DD,DQ &#xff09;和标签来指定数组的名称和内容。DB定义字节数组&#xff08;每个元素占1字节&#xff09;、DW定义字数组&#xff08;每个元素占2字节&#xff…

Java学习 - MyBatis - 初识MyBatis

前言 什么是持久化 持久化是将程序数据在持久状态和瞬时状态间转换的机制&#xff0c;将数据保存到可永久保存的存储设备中。最常见的就是将内存中的对象存储在数据库中&#xff0c;或者存在磁盘文件、XML 数据文件中等等。其中&#xff0c;文件 IO 属于持久化机制&#xff0…

【实战JVM】-实战篇-06-GC调优

文章目录 1 GC调优概述1.1 调优指标1.1.1 吞吐量1.1.2 延迟1.1.3 内存使用量 2 GC调优方法2.1 发现问题2.1.1 jstat工具2.1.2 visualvm插件2.1.3 PrometheusGrafana2.1.4 GC Viewer2.1.5 GCeasy 2.2 常见GC模式2.2.1 正常情况2.2.2 缓存对象过多2.2.3 内存泄漏2.2.4 持续FullGC…

SpringBoot个人网盘系统-计算机毕业设计源码92922

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势或改善自身的缺点&#xff0c;互联网的发展文件管理带来了福音。个人网盘系统是以实际运用为开发背景&#xff0c;运用软件工程原理和…

⌈ 传知代码 ⌋ 【CLIP】文本也能和图像配对

&#x1f49b;前情提要&#x1f49b; 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间&#xff0c;对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…

Github 2024-06-10 开源项目日报 Top10

根据Github Trendings的统计,今日(2024-06-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目2Go项目2PHP项目1Blade项目1TypeScript项目1Lua项目1Dart项目1Swift项目1Cuda项目1Python项目1MDX项目1Ventoy: 100%开源的可启动USB解决方…

超越出身与学府:揭秘成功者共有的七大特质

在当今多元化的世界里&#xff0c;个人成功的故事如同繁星点点&#xff0c;照亮了无数追梦者的前行之路。新东方创始人俞敏洪先生曾深刻地指出&#xff0c;真正的成功并不取决于家庭背景的显赫与否&#xff0c;也不在于就读大学的名气大小&#xff0c;而是深深植根于个人内在的…

VMware Workstation虚拟机固定IP配置(主机互通、外网可访问)

VMware Workstation虚拟机固定IP配置 环境问题配置过程配置虚拟机网络适配器配置虚拟机网络配置虚拟网卡网络适配器配置虚拟机固定IP 结果验证结束语参考 环境 主机&#xff1a;Windows 11 VMware Workstation: 17.5.2 虚拟机&#xff1a;Ubuntu 24.02 LTS 注&#xff1a; 主…

DeepSpeed Huggingface模型的自动Tensor并行

推理阶段。在后台&#xff0c;1. DeepSpeed会把运行高性能kernel(kernel injection)&#xff0c;加快推理速度&#xff0c;这些对用户是透明的&#xff1b; 2. DeepSpeed会根据mp_size来将模型放置在多个GPU卡上&#xff0c;自动模型并行&#xff1b; import os import torch …

【数据结构】前缀树(字典树)汇总

基础 {“a”,“abc”,“bac”,“bbc”,“ca” }的字典树如下图&#xff1a; 最主用的应用&#xff1a;一&#xff0c;字符串编码。二&#xff0c;位运算。 字符串编码 相比利用哈希映射编码&#xff0c;优点如下&#xff1a; 依次查询长度为n的字符串s的前缀时间复杂度是O(…

iCloud完全指南:释放Apple云服务的终极潜力

iCloud是苹果公司提供的云服务&#xff0c;它允许用户存储和同步照片、文档、音乐、应用数据以及更多类型的文件。通过有效利用iCloud&#xff0c;用户可以在不同设备间无缝地访问和编辑内容。本文旨在全面介绍如何高效使用iCloud&#xff0c;确保您能够最大化这一服务的价值。…