一次查询,无限 Elasticsearch Serverless 项目:隆重推出跨项目搜索

Elastic Cloud Serverless 中的跨项目搜索允许您在单个 Elasticsearch 或 ES|QL 请求中查询跨隔离项目的数据:无需重复、无需网络对等,也无需因复制日志而产生出口成本。

跨项目搜索 (CPS) 现已在 Elastic Cloud Serverless 中提供。通过一个像 FROM logs* 这样的单个查询,您即可跨多个孤立项目搜索数据——无需网络对等连接、无需证书管理、无需数据重复。项目保留在各自的区域和云中;只有结果会返回给您。对于处理数据驻留要求、租户隔离或因复制日志而产生跨区流量成本的团队,CPS 意味着您的数据可以存储在其所属的位置,同时仍然可以作为一个整体进行查询。

Elastic Cloud Serverless 已经消除了管理基础架构和版本升级的麻烦。CPS 则更进一步。我们用简单的链接模型取代了复杂的网络对等连接和人工证书管理。现在,您可以将 Elastic Cloud Serverless 项目视为数据的简单命名空间。无论您是在应对严格的数据驻留法律、隔离租户数据,还是只是试图避免由于复制日志而产生的巨额跨区流量费,CPS 都支持您通过单次查询在数据所在的位置搜索数据。

在这篇文章中,我们将介绍 CPS 的工作原理、如何使用项目标签控制搜索,以及这种新模式与传统的跨集群搜索 (CCS) 有何不同。

如要开始跨项目搜索,请在 Elastic Cloud 控制台或 API 中链接项目。链接过程非常简单,而且是单向的:选择一个源项目,然后连接它应该搜索的项目。这些链接可以跨越区域、云服务提供商和项目类型,因此您的数据可以在不放弃统一搜索体验的情况下保留在原位置。

链接创建完成后,通常会在一分钟左右生效。如果您已经打开了 Kibana,请刷新页面以查看新的跨项目搜索功能。

跨项目搜索如何默认查询所有链接项目

一旦项目被链接起来,跨项目搜索就会将独立的项目变成一个单一的逻辑搜索面。如果日志跨越多个项目,则类似 FROM logs* 这样的查询会搜索源项目和有匹配数据的任何链接项目。您不必事先为每个远程目标命名。

这比跨集群搜索有了重大改进。在 CCS 中,访问本地和远程数据通常意味着编写类似 FROM logs*,*:logs* 的内容。对于用户来说,这意味着查询复杂性降低。对于团队而言,这让我们离实现跨分布式数据的真正“单一视图”更近了一步。

有关更多信息,请参阅 CPS 搜索模型文档。

如果您有兴趣了解我们如何构建此功能的技术细节,请参阅跨项目搜索 (CPS) 在 Elasticsearch Serverless 中如何工作

通过项目路由控制搜索

默认情况下跨所有关联项目进行搜索,对于许多工作流而言既便捷又实用;然而,并非每一次搜索都应当覆盖所有范围。跨项目搜索引入了项目路由,这是一种将查询限制到特定项目子集的方式。

它通过 Elastic Cloud 中定义的项目标签工作。每个项目都有内置属性,例如其别名、云服务提供商和区域。您还可以添加自己的标签,以反映您的组织对其数字资产的划分方式,如 environment:prod, environment:test、业务单元或客户名称。Elasticsearch 可以使用该元数据来决定哪些链接的项目应参与搜索。

所有支持跨项目搜索的 Elasticsearch 终端都接受 project_routing 参数。在技术预览版中,路由功能仅限于使用项目别名。例如,将 project_routing 设置为 _alias:my-linked-project 将会把查询仅发送到该关联项目,而设置为 _alias:_origin 则会将查询保留在源项目内。随着时间的推移,这个模型将为更丰富的路由功能打开大门,届时,查询范围将完美契合贵公司的逻辑架构,而不再受制于基础设施的物理布局。

请参阅项目路由文档了解示例和更多关于工作原理的信息。

Kibana 空间层级的默认项目路由

关于您的查询路由为何需要更精准的范围,举例而言,盲目查询所有链接项目可能会导致您的 Kibana 检测规则触发大量误报,或者让您现有的仪表盘数据变得极其混乱。如要解决这个问题,您可以在 Kibana 中设置 空间层级的默认项目范围。这相当于为该特定空间设置了一个安全预设——这意味着所有仪表板、Discover 会话和告警规则都会自动遵循该设置。分析师在调查过程中如果需要更广泛的视角,仍可手动调整覆盖范围。

这对于共享中央项目的团队(例如 MSP、MSSP 和卓越中心)来说很重要:您可以为每个团队分配自己的 Kibana 空间,并将其限制为仅查询其特定的客户项目,从而保证租户特定的体验。分析师在调查过程中如果需要更广泛的视角,仍可手动调整覆盖范围。

您在云用户界面中链接项目之前或之后可以配置此空间默认设置。但由于 CPS 在链接建立后立即开启“全局搜索”行为,因为先设置 Kibana 默认值可以确保现有的检测规则不会突然在海量全球数据下产生误报或导致团队不堪重负。

在搜索中使用标签

除了使用标签进行项目路由,您还可以在 ES|QL 和搜索查询中使用标签。这可以用来识别结果集中每条记录或行的来源,或者按这些标签进行排序、过滤或聚合。

例如,如果您想查看 ES|QL 响应中每一行数据来自哪个项目,可以将 _project._alias 标签添加到 ES|QL 查询中:

这样一来,您就可以在查询的其他部分(包括 KEEP 子句)中使用 “_project._alias”,在查询的其他部分(包括 KEEP 子句)中,从而使其呈现在最终结果中。

有关在查询中使用标签的更多示例,请参阅此文档,其中介绍了如何在搜索 API 和 ES|QL 中使用标签。

如果您有兴趣了解如何为搜索和 ES|QL 查询添加标签的技术细节,请参阅在 Elasticsearch Serverless 中使用项目标签和路由加快跨项目搜索

跨项目搜索如何平等地处理源项目和链接项目

如果您用过CCS,您可能知道本地群集与远程群集的处理方式有所不同。

  • 本地群集错误的处理方式与远程群集错误的处理方式不同。特别是,CCS 使用 skip_unavailable 设置来控制来自远程群集的错误的行为方式,但本地群集不存在该设置。
  • 本地集群没有“集群别名”,因此索引表达式 *:logs* 搜索所有远程项目,但会跳过本地集群。如要同时搜索两者,您必须使用索引表达式 logs*,*:logs*

在 CPS 中,我们已经改变了这两种行为,使原始项目和链接项目处于更加平等的地位。

首先,在 Elastic Cloud Serverless 中不使用 skip_unavailable 设置。相反,您可以通过在 _search 或 _async_search 中使用 allow_partial_search_results 参数,或在 ES|QL 中使用 allow_partial_results 参数,来控制是否希望在搜索时获得部分结果。

其次,在 Elastic Cloud Serverless 中,源项目有一个项目别名。它在 Elastic Cloud 中定义,就像所有项目标签一样。因此,在 CPS 中,下面的所有查询都是等价的,它们针对的都是有“日志”索引的所有项目:

注意:在针对缺失索引的错误处理方面,限定索引表达式 *:logs非限定表达式 logs 之间存在重要区别。有关详细信息,请参阅公共文档中的非限定和限定搜索表达式

Elastic 创建了一种新的基于云的安全模型,即通用身份和访问管理 (UIAM),它实现了跨项目搜索的一个关键原则:您可以访问的项目和数据不依赖于您访问它的位置

无论您是从主要的可观测项目还是从临时分析项目启动搜索,您对链接数据的访问都保持一致,因为这些访问权限已在集中位置进行了统一定义。该云端认证与授权模型利用云 UIAM 服务,确保无论源自哪个项目,您的访问权限均保持统一。

最终,Elastic Cloud Serverless 和 CPS 可共同减少操作摩擦,为您提供更多基于逻辑而非物理或操作因素来组织数据的选择。跨项目搜索允许您的用户纯粹关注数据的逻辑组织,提供统一的搜索体验,而不受过去物理复杂性的限制。

常见问题

什么是 Elastic Serverless 中的跨项目搜索?

跨项目搜索 (CPS) 是 Elastic Cloud Serverless 中的一项功能,它可以让您通过单个 Elasticsearch 或 ES|QL 请求在多个孤立的无服务器项目中查询数据。项目在 Elastic Cloud 控制台中链接,一旦链接,像“FROM logs*”这样的查询会自动搜索原始项目和所有链接项目,无需任何额外配置。

跨项目搜索与跨集群搜索(CCS)有何不同?

CCS 连接自管理或有状态的 Elasticsearch 集群,需要网络对等连接、手动证书管理以及显式的远程集群寻址(例如“*:logs*”)。而 CPS 在 Elastic Cloud Serverless 中将此替换为一个简单的项目链接模型,其中原始项目和链接项目享有同等地位,单个非限定索引表达式可搜索所有项目。

我需要复制或重复数据才能使用跨项目搜索吗?

不需要。CPS 在搜索时实现跨项目的联合查询。您的数据依然保留在每个项目中,只有查询结果被汇总并返回,从而避免了重复数据的存储和网络出方向成本。

如何将跨项目搜索限制到特定项目?

在任何受支持的 Elasticsearch 终端上使用 `project_routing` 参数。您可以按项目别名(例如“_alias:my-project”)路由,限制查询范围为一个项目,或者在 Kibana Space 层级设置默认项目范围,使该空间内的所有仪表板和提醒自动限定到正确的项目范围。

跨项目搜索是否在不同地区和云服务提供商之间有效?

是的。CPS 支持跨地区和云服务提供商的项目链接。数据不会在项目之间移动;只有搜索结果会返回到原始位置,因此不会违反数据驻留限制。

CPS 中跨链接项目的访问控制是如何工作的?

CPS 使用通用身份和访问管理 (UIAM),这是一种集中式的基于云的模型。无论您从哪个项目运行查询,您的访问权限都会得到一致执行,因此用户只能查看他们获得授权访问的所有链接项目中的数据。

如果在搜索过程中链接的项目不可用,会发生什么?

在“_搜索”或“_async_搜索”中使用“allow_partial_search_results”参数,或在 ES|QL 中使用“allow_partial_results”参数来控制当链接的项目不可用时查询返回部分结果还是失败。CPS 中没有像 CCS 中那样的“skip_unavailable”设置。

这些内容对您有多大帮助?

没有帮助

有点帮助

非常有帮助

相关内容

准备好打造最先进的搜索体验了吗?

足够先进的搜索不是一个人的努力就能实现的。Elasticsearch 由数据科学家、ML 操作员、工程师以及更多和您一样对搜索充满热情的人提供支持。让我们联系起来,共同打造神奇的搜索体验,让您获得想要的结果。

亲自试用