搜索分析

edit

行为分析是一个分析事件收集平台。 使用这些工具来分析用户搜索和点击行为。 利用这些信息来提高搜索结果的相关性,并识别内容中的差距。

开始使用通过在您的网站或应用程序上嵌入我们的一个JavaScript客户端并记录您想要跟踪的用户操作。 例如,您可以跟踪用户何时进行搜索、何时点击搜索结果,或用户何时访问您网站上的特定页面。

数据和分析存储在 Elasticsearch 索引中,用于高级分析和可视化。

即使你不使用 Elastic 进行搜索,你也可以使用这些工具从你的应用程序/网站收集分析数据。

可用性和先决条件

edit

行为分析是一个测试版功能。 测试版功能可能会发生变化,并且不受一般发布(GA)功能支持SLA的保障。Elastic计划在未来版本中将此功能提升为GA。

展开以了解版本历史
  • 行为分析功能在 Elastic 8.7.0 版本中被引入到企业搜索服务中。
  • 8.8.0 版本中有一个破坏性的模式变更。 (如果你从 8.7 升级到 8.8,请参阅搜索文档中的 从 8.7 迁移到 8.8。)
  • 该功能在 8.10 版本中被移至 Elasticsearch,这意味着从 8.10 版本开始不再需要企业搜索服务。

分析功能对所有 Elastic Cloud 用户开放。

分析功能也适用于满足订阅要求的自托管部署。 请在Elastic Stack 订阅页面的Elastic Search部分查看此功能的要求。

您的 Elastic 部署必须包括 Elasticsearch 和 Kibana 服务。

文档

edit

以下文档可在Elasticsearch文档中找到:

其他文档可在以下位置找到:

GDPR 合规性

用户可能对分析数据收集的隐私影响感到担忧。 行为分析完全符合GDPR,因为不收集任何个人数据。

要集成行为分析客户端,会话数据存储在两个令牌中:

  • 用户令牌。用户的唯一标识符。 存储在EA_UID cookie中。默认时间为用户首次访问网站后的24小时。
  • 会话令牌。会话的唯一标识符。 存储在EA_SID cookie中。时间为用户上次访问网站后的30分钟。

这些令牌使客户端能够在会话之间识别用户。 它们不会收集敏感信息,例如IP地址或位置数据,或任何其他个人数据。

开始使用行为分析

edit

您可以在 Kibana UI 中管理您的分析。 前往 搜索 > 行为分析 以开始使用。

使用行为分析是一个三步过程:

  1. 创建一个集合。 集合是您的分析事件的逻辑分组。
  2. 设置一个UI集成
  3. 分析收集的数据。

集合

edit

本指南重点介绍在 Kibana 中使用行为分析 UI 来创建和管理集合。 您还可以使用 Behavioral Analytics APIs 来创建、列出和删除集合,以及向集合发布事件。

集合是一组分析事件。

设置行为分析的第一步是创建一个集合。 要在 Kibana UI 中执行此操作:

  1. 转到 搜索 > 行为分析
  2. 选择 创建集合
  3. 仔细命名您的集合,因为您以后无法更改它。
  4. 选择 创建

当您创建一个集合时,我们会自动为该集合创建一个数据视图。 这使得Kibana能够访问存储在Elasticsearch中的分析数据。

这意味着一旦您将分析功能集成到您的应用程序或网站中,您可以立即使用Discover来查看事件、设置过滤器,并使用Lens创建可视化。

一旦创建了集合,您需要完成UI集成。

用户界面集成

edit

详细的集成说明在 Kibana UI 中提供。 在 集成 标签下找到这些内容,位于 搜索 > 行为分析 > <你的集合>

选择以下集成选项中的一个

一旦嵌入,使用Search UI JavaScript库的用户可以使用以下集成来简化事件发送:

选项 1: 浏览器跟踪器
edit

在您的网站或应用程序源文件中添加一个JavaScript代码片段,使用浏览器跟踪器

这种方法最适合用于网页浏览器。 Node 应用程序和 Search UI 用户不应选择此选项。

入门指南可在Kibana界面中找到。

按照以下步骤

  1. 在您希望跟踪的网站或应用程序的每个页面上嵌入行为分析JavaScript代码片段。

  2. 初始化客户端以开始跟踪事件。 例如:

  3. 通过使用trackSearchtrackSearchClick方法来跟踪搜索事件,如结果点击和搜索。
选项 2:JavaScript 追踪器
edit

JavaScript 客户端作为一个 NPM 包 提供。 我们推荐这种方法,如果你的应用程序从 NPM 包中捆绑 JavaScript。 这是一个适用于 Node 应用(服务器端应用)的好选择。 分析将与你的应用程序一起捆绑。

这使得浏览器能够优化JavaScript的下载。

开始使用的说明也可以在Kibana界面中找到。

按照以下步骤开始:

  1. 下载来自NPM的行为分析JavaScript跟踪器客户端:

    npm install @elastic/behavioral-analytics-javascript-tracker

  2. 导入客户端到您的应用程序中:

    import {
      createTracker,
      trackPageView,
      trackSearch,
      trackSearchClick
    } from "@elastic/behavioral-analytics-javascript-tracker";
  3. 初始化客户端以开始跟踪事件:

    使用 createTracker 方法以您的配置初始化跟踪器。 然后,您可以使用跟踪器将事件发送到行为分析。

    示例初始化:

    createTracker({
      endpoint: "https://77561m8ivn1olhs5fczpls0xa85bueqt.us-west2.gcp.elastic-cloud.com:443",
      collectionName: "my-collection",
      apiKey: ""
    });
  4. 调度 页面浏览和搜索行为事件。

    一旦你调用了createTracker,你就可以使用跟踪器方法,例如trackPageView,将事件发送到行为分析。

一旦集成,您应该能够在资源管理器标签页中看到页面浏览事件。

基于会话的采样

您并不总是希望将所有会话都发送到您的 Elastic 集群。 您可以通过向 createTracker 方法添加采样参数来引入基于会话的采样。

如果采样设置为1(默认),所有会话都会发送事件。 如果采样设置为0,则没有会话会发送事件。

这是一个例子:

createTracker({
  // ... tracker settings
  sampling: 0.3, // 30% of sessions will send events to the server
});

搜索界面集成

edit

Search UI 是一个用于构建搜索体验的 JavaScript 库。 使用 NPM 上提供的 Search UI 分析插件 将行为分析与 Search UI 集成。

此集成使您能够将事件从Search UI分派到行为分析客户端。 此集成的优势在于您无需设置自定义事件。 Search UI触发的事件会自动分派。

要使用此集成,请按照以下步骤操作:

  1. 将行为分析嵌入到您的网站中,使用选项 1:浏览器跟踪器 选项 2:JavaScript 跟踪器
  2. 通过将其导入到您的应用程序中,安装@elastic/search-ui-analytics-plugin
  3. 将插件添加到您的 Search UI 配置中。

有关详细信息,请参阅Search UI 分析插件文档

下一步

edit

为行为分析设置CORS

edit

行为分析直接将事件发送到 Elasticsearch API。 这意味着浏览器直接向 Elasticsearch API 发出请求。 Elasticsearch 支持 跨源资源共享 (CORS),但此功能默认情况下是禁用的。 因此,浏览器将阻止这些请求。

有两种解决方法:

在 Elasticsearch 上启用 CORS

edit

这是最简单的选项。 通过在您的 elasticsearch.yml 文件中添加以下内容来启用 Elasticsearch 上的 CORS:

http.cors.allow-origin: "*" # Only use unrestricted value for local development
# Use a specific origin value in production, like `http.cors.allow-origin: "https://<my-website-domain.example>"`
http.cors.enabled: true
http.cors.allow-credentials: true
http.cors.allow-methods: OPTIONS, POST
http.cors.allow-headers: X-Requested-With, X-Auth-Token, Content-Type, Content-Length, Authorization, Access-Control-Allow-Headers, Accept

在 Elastic Cloud 上,您可以通过 编辑您的 Elasticsearch 用户设置 来完成此操作。

  1. 从您的部署菜单中,转到编辑页面。
  2. Elasticsearch部分,选择管理用户设置和扩展
  3. 使用上述配置更新用户设置。
  4. 选择保存更改

通过支持CORS的服务器代理请求

edit

如果你无法在Elasticsearch上启用CORS,你可以通过一个支持CORS的服务器代理请求。 这更复杂,但这是一个可行的选择。

查看行为分析事件

edit

请参阅事件参考以获取由事件记录的字段的完整列表。

一旦你开始使用行为分析追踪器进行事件追踪,你就可以在Kibana的预建仪表板上查看它们。

在概览仪表板中查看事件

edit

The 概览 仪表板提供了以下内容的快速概览:

  • 搜索
  • 无结果
  • 点击
  • 会话

这使您能够快速检查这些事件的绝对数字和趋势(以百分比变化跟踪)。 在 搜索 > 行为分析 > 您的集合 > 概览 下找到此仪表板。

以下截图展示了一个示例概览仪表盘:

Analytics Overview dashboard showing the number of searches

在探索者仪表板中查看事件

edit

The Explorer dashboard provides a more detailed view of your events. Find this dashboard under Search > Behavioral Analytics> your-collection > Explorer.

在这里,您可以查找和搜索以下内容:

  • 搜索词
  • 点击最多的结果
  • 无结果
  • 位置
  • 引荐来源

您还可以通过点击表头箭头轻松地按升序或降序排序。

以下截图展示了位置标签页,这是一个资源管理器仪表板,按降序列出了主要位置:

Explorer dashboard showing the top locations in descending order

发现和Lens

edit

如需更详细的分析,您可以在 Kibana 的 Discover 应用中查看事件。 Behavioral Analytics UI 将引导您从 Explorer 仪表板进入此处。 您可以使用 Discover 深入了解详情,然后使用 Lens 生成可视化效果。

Discover 与 数据视图 一起工作。 您会发现为您的集合自动创建了一个数据视图,名称为 behavioral_analytics.events-。 此数据视图将在数据视图下拉菜单中预先选择。 使用此菜单在不同集合的数据视图之间切换。

以下截图展示了在“发现”中如何找到数据视图下拉菜单:

Analytics Discover app showing the data view dropdown menu

Discover 有很多选项,但这里有一个快速入门概述:

  • 通过搜索术语过滤您的数据,例如 searchpage_viewsearch_click。 您将看到与您的搜索匹配的点击时间序列。
  • 在字段名称搜索栏中搜索“event”。 例如:

    • 选择 event.action。 您将找到所有已发送事件及其频率分布的列表。
  • 搜索 search.query 以查找所有搜索查询。
  • 选择 可视化 以创建 Lens 可视化。

以下截图展示了一个event.action分布的Lens可视化:

Analytics Discover app showing a Lens visualization of an event action distribution
了解更多
edit

阅读Discover文档

阅读Lens 文档

行为分析事件参考

edit

行为分析日志使用Elastic Common Schema记录事件,包括用于分析事件的自定义字段集。 请参阅记录的完整数据对象的示例

字段概览

edit

常见事件字段

edit
@timestamp
事件的时间戳。
event.action
事件的类型。可能的值是 searchsearch_clickpageview
event.source
事件的来源。可能的值是 clientserver
session.id
会话的唯一标识符。
user.id
用户的唯一标识符。
_id
文档ID。
_index
索引名称。
_score
文档的分数。

搜索事件字段

edit
search.filters
应用于搜索查询的过滤器。
search.query
搜索查询。
search.results.items.document.id
搜索结果中文档的ID。
search.results.items.document.index
搜索结果中文档的索引。
search.results.items.page.url.domain
搜索结果中页面的URL域名。
search.results.items.page.url.original
搜索结果中页面的原始URL。
search.results.items.page.url.path
搜索结果中页面的URL路径。
search.results.items.page.url.scheme
搜索结果中页面的URL方案。
search.results.total_results
搜索查询返回的结果总数。
search.search_application
用于执行搜索查询的搜索应用程序。
search.sort.name
应用于搜索查询的排序名称。

搜索点击事件字段

edit
document.id
被点击的文档的ID。
document.index
包含被点击文档的索引。
page.url.domain
被点击页面的URL域名。
page.url.original
被点击页面的原始URL。
page.url.path
被点击页面的URL路径。
page.url.scheme
点击的页面的URL方案。
search.filters
应用于搜索查询的过滤器。
search.query
搜索查询。
search.results.items.document.id
搜索结果中文档的ID。
search.results.items.document.index
搜索结果中文档的索引。
search.results.items.page.url.domain
搜索结果中页面的URL域名。
search.results.items.page.url.original
搜索结果中页面的原始URL。
search.results.items.page.url.path
搜索结果中页面的URL路径。
search.results.items.page.url.scheme
搜索结果中页面的URL方案。
search.results.total_results
搜索查询返回的结果总数。
search.search_application
用于执行搜索查询的搜索应用程序。
search.sort.name
应用于搜索查询的排序名称。
session.location.country_iso_code
发生搜索点击的国家/地区的ISO代码。
session.location.country_name
搜索点击发生的国家的名称。

页面浏览事件字段

edit
document.id
所查看文档的ID。
document.index
包含被查看文档的索引。
page.referrer.domain
引用已查看页面的页面的URL域。
page.referrer.original
引用查看页面的原始URL。
page.referrer.path
引用查看页面的页面的路径。
page.referrer.scheme
引用查看页面的页面的URL方案。
page.title
所查看页面的标题。
page.url.domain
所查看页面的URL域名。
page.url.original
所查看页面的原始URL。
page.url.path
所查看页面的URL路径。
page.url.scheme
所查看页面的URL方案。
session.location.country_iso_code
页面浏览发生所在国家的ISO代码。
session.location.country_name
页面浏览发生所在国家的名称。

示例

edit
展开以查看完整的搜索事件数据对象示例:
{
  "@timestamp": [
    "2023-05-16T12:52:29.003Z"
  ],
  "event.action": [
    "search"
  ],
  "event.source": [
    "client"
  ],
  "search.filters": [
    {
      "color": [
        "silver"
      ],
      "brand": [
        "Robel, Klocko and Ziemann",
        "McClure, Marks and Mertz"
      ]
    }
  ],
  "search.query": [
    "transformation"
  ],
  "search.results.items.document.id": [
    "045a164b-229e-40b5-ba66-b2ebabd2a251"
  ],
  "search.results.items.document.index": [
    "products"
  ],
  "search.results.items.page.url.domain": [
    "fancy-overcoat.org"
  ],
  "search.results.items.page.url.original": [
    "http://fancy-overcoat.org/happy/pancakes/deals"
  ],
  "search.results.items.page.url.path": [
    "/happy/pancakes/deals"
  ],
  "search.results.items.page.url.scheme": [
    "http"
  ],
  "search.results.total_results": [
    67
  ],
  "search.search_application": [
    "search-ui"
  ],
  "search.sort.name": [
    "relevance"
  ],
  "session.id": [
    "2bc31b08-d443-4b7a-81ea-65edf3dd82e7"
  ],
  "user.id": [
    "42704a4b-692b-4654-bb67-a65eb0c72f15"
  ],
  "_id": "y3IBBogBWHKTU-4a543S",
  "_index": ".ds-behavioral_behavioral-analytics-event-website-2023.05.10-000001",
  "_score": null
}
展开以查看完整的search_click事件数据对象示例:
{
  "@timestamp": [
    "2023-05-16T12:22:23.468Z"
  ],
  "document.id": [
    "38cca784-109a-4ea0-a4e8-60c3be667ffd"
  ],
  "document.index": [
    "products"
  ],
  "event.action": [
    "search_click"
  ],
  "event.source": [
    "client"
  ],
  "page.url.domain": [
    "unfurnished-appartments"
  ],
  "page.url.original": [
    "https://unfurnished-appartments/new/europe"
  ],
  "page.url.path": [
    "/new/europe"
  ],
  "page.url.scheme": [
    "https"
  ],
  "search.filters": [
    {
      "brand": [
        "McClure, Marks and Mertz",
        "Ondricka - Rath"
      ]
    }
  ],
  "search.query": [
    "ferryboat"
  ],
  "search.results.items.document.id": [
    "0c76967b-4915-446e-9b2c-b1bfb9e39e1e"
  ],
  "search.results.items.document.index": [
    "products"
  ],
  "search.results.items.page.url.domain": [
    "dependent-lecture.info"
  ],
  "search.results.items.page.url.original": [
    "http://dependent-lecture.info/documents/additional/latest"
  ],
  "search.results.items.page.url.path": [
    "/documents/additional/latest"
  ],
  "search.results.items.page.url.scheme": [
    "http"
  ],
  "search.results.total_results": [
    54
  ],
  "search.search_application": [
    "search-ui"
  ],
  "search.sort.name": [
    "relevance"
  ],
  "session.id": [
    "9411fb93-8707-49a4-baab-cec4d6aef753"
  ],
  "session.location.country_iso_code": [
    "GP"
  ],
  "session.location.country_name": [
    "Guadeloupe"
  ],
  "user.id": [
    "911d0c19-e713-4413-8f4c-c6c612bc37c4"
  ],
  "_id": "m8cBBogBG4-Ak0Iy7LME",
  "_index": ".ds-behavioral_behavioral-analytics-event-website-2023.05.10-000001",
  "_score": null
}
展开查看完整的pageview事件数据对象示例:
{
  "@timestamp": [
    "2023-05-16T12:52:51.309Z"
  ],
  "document.id": [
    "c98ppfc8-3a04-4a20-888a-f87292b31181"
  ],
  "document.index": [
    "products"
  ],
  "event.action": [
    "page_view"
  ],
  "event.source": [
    "client"
  ],
  "page.referrer.domain": [
    "happy-pancakes.name"
  ],
  "page.referrer.original": [
    "https://happy-pancakes.name/magnam"
  ],
  "page.referrer.path": [
    "/magnam"
  ],
  "page.referrer.scheme": [
    "https"
  ],
  "page.title": [
    "Super fast delivery"
  ],
  "page.url.domain": [
    "happy-staircase.net"
  ],
  "page.url.original": [
    "http://happy-staircase.net/quam"
  ],
  "page.url.path": [
    "/quam"
  ],
  "page.url.scheme": [
    "http"
  ],
  "session.id": [
    "2bc31b08-d443-4b7a-81ea-65edf3dd82e7"
  ],
  "session.location.country_iso_code": [
    "SN"
  ],
  "session.location.country_name": [
    "Senegal"
  ],
  "user.id": [
    "42704a4b-692b-4654-bb67-a65eb0c72f15"
  ],
  "_id": "zHIBBogBWHKTU-4a543S",
  "_index": ".ds-behavioral_behavioral-analytics-event-website-2023.05.10-000001",
  "_score": null
}

行为分析 API 概述

edit

本页面概述了所有可用于行为分析的API,并链接到它们的文档。

行为分析 REST API

edit

行为分析依赖于多个 Elasticsearch API 来管理分析集合。 请参阅 API 文档 以获取详细信息。

行为分析客户端

edit

行为分析通过使用我们的一个JavaScript客户端集成到您的网站上:

  • 浏览器追踪器 - 通过使用

  • Javascript Tracker - 使用JavaScript模块集成到您的网站中。

搜索界面集成

edit

为了简化将行为分析集成到您的网站中,我们提供了一个搜索界面集成。 此集成会在您的客户与您的搜索体验互动时,自动将行为分析事件发送到您的集合中。

请参阅Search UI 分析插件文档

Searchkit 集成

edit

行为分析还集成了Searchkit,这是一个用于在 Elasticsearch 之上构建用户界面的开源库。