搜索分析
edit搜索分析
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文档中找到:
其他文档可在以下位置找到:
-
The Behavioral Analytics Tracker Mono Repo 包含 Behavioral Analytics Tracker 的源代码,可以使用 JavaScript 或 Browser trackers 嵌入:
- Search UI 文档包含有关 Search UI Analytics Plugin 的信息。
- Behavioral Analytics 使用多个 APIs 来管理分析集合。
GDPR 合规性
用户可能对分析数据收集的隐私影响感到担忧。 行为分析完全符合GDPR,因为不收集任何个人数据。
要集成行为分析客户端,会话数据存储在两个令牌中:
-
用户令牌。用户的唯一标识符。
存储在
EA_UIDcookie中。默认时间为用户首次访问网站后的24小时。 -
会话令牌。会话的唯一标识符。
存储在
EA_SIDcookie中。时间为用户上次访问网站后的30分钟。
这些令牌使客户端能够在会话之间识别用户。 它们不会收集敏感信息,例如IP地址或位置数据,或任何其他个人数据。
开始使用行为分析
edit您可以在 Kibana UI 中管理您的分析。 前往 搜索 > 行为分析 以开始使用。
使用行为分析是一个三步过程:
集合
edit本指南重点介绍在 Kibana 中使用行为分析 UI 来创建和管理集合。 您还可以使用 Behavioral Analytics APIs 来创建、列出和删除集合,以及向集合发布事件。
集合是一组分析事件。
设置行为分析的第一步是创建一个集合。 要在 Kibana UI 中执行此操作:
- 转到 搜索 > 行为分析。
- 选择 创建集合。
- 仔细命名您的集合,因为您以后无法更改它。
- 选择 创建。
当您创建一个集合时,我们会自动为该集合创建一个数据视图。 这使得Kibana能够访问存储在Elasticsearch中的分析数据。
这意味着一旦您将分析功能集成到您的应用程序或网站中,您可以立即使用Discover来查看事件、设置过滤器,并使用Lens创建可视化。
一旦创建了集合,您需要完成UI集成。
用户界面集成
edit详细的集成说明在 Kibana UI 中提供。 在 集成 标签下找到这些内容,位于 搜索 > 行为分析 > <你的集合>。
选择以下集成选项中的一个:
一旦嵌入,使用Search UI JavaScript库的用户可以使用以下集成来简化事件发送:
选项 1: 浏览器跟踪器
edit在您的网站或应用程序源文件中添加一个JavaScript代码片段,使用浏览器跟踪器。
这种方法最适合用于网页浏览器。 Node 应用程序和 Search UI 用户不应选择此选项。
入门指南可在Kibana界面中找到。
按照以下步骤:
-
在您希望跟踪的网站或应用程序的每个页面上嵌入行为分析JavaScript代码片段。
-
初始化客户端以开始跟踪事件。 例如:
-
通过使用
trackSearch或trackSearchClick方法来跟踪搜索事件,如结果点击和搜索。
选项 2:JavaScript 追踪器
editJavaScript 客户端作为一个 NPM 包 提供。 我们推荐这种方法,如果你的应用程序从 NPM 包中捆绑 JavaScript。 这是一个适用于 Node 应用(服务器端应用)的好选择。 分析将与你的应用程序一起捆绑。
这使得浏览器能够优化JavaScript的下载。
开始使用的说明也可以在Kibana界面中找到。
按照以下步骤开始:
-
下载来自NPM的行为分析JavaScript跟踪器客户端:
npm install @elastic/behavioral-analytics-javascript-tracker -
导入客户端到您的应用程序中:
import { createTracker, trackPageView, trackSearch, trackSearchClick } from "@elastic/behavioral-analytics-javascript-tracker"; -
初始化客户端以开始跟踪事件:
使用
createTracker方法以您的配置初始化跟踪器。 然后,您可以使用跟踪器将事件发送到行为分析。示例初始化:
createTracker({ endpoint: "https://77561m8ivn1olhs5fczpls0xa85bueqt.us-west2.gcp.elastic-cloud.com:443", collectionName: "my-collection", apiKey: "" }); -
调度 页面浏览和搜索行为事件。
一旦你调用了
createTracker,你就可以使用跟踪器方法,例如trackPageView,将事件发送到行为分析。
一旦集成,您应该能够在资源管理器标签页中看到页面浏览事件。
基于会话的采样
您并不总是希望将所有会话都发送到您的 Elastic 集群。
您可以通过向 createTracker 方法添加采样参数来引入基于会话的采样。
如果采样设置为1(默认),所有会话都会发送事件。 如果采样设置为0,则没有会话会发送事件。
这是一个例子:
createTracker({
// ... tracker settings
sampling: 0.3, // 30% of sessions will send events to the server
});
搜索界面集成
editSearch UI 是一个用于构建搜索体验的 JavaScript 库。 使用 NPM 上提供的 Search UI 分析插件 将行为分析与 Search UI 集成。
此集成使您能够将事件从Search UI分派到行为分析客户端。 此集成的优势在于您无需设置自定义事件。 Search UI触发的事件会自动分派。
要使用此集成,请按照以下步骤操作:
- 将行为分析嵌入到您的网站中,使用选项 1:浏览器跟踪器 或 选项 2:JavaScript 跟踪器。
-
通过将其导入到您的应用程序中,安装
@elastic/search-ui-analytics-plugin。 - 将插件添加到您的 Search UI 配置中。
有关详细信息,请参阅Search UI 分析插件文档。
下一步
edit- 请参阅分析API参考。
为行为分析设置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 用户设置 来完成此操作。
- 从您的部署菜单中,转到编辑页面。
- 在Elasticsearch部分,选择管理用户设置和扩展。
- 使用上述配置更新用户设置。
- 选择保存更改。
通过支持CORS的服务器代理请求
edit如果你无法在Elasticsearch上启用CORS,你可以通过一个支持CORS的服务器代理请求。 这更复杂,但这是一个可行的选择。
查看行为分析事件
edit请参阅事件参考以获取由事件记录的字段的完整列表。
一旦你开始使用行为分析追踪器进行事件追踪,你就可以在Kibana的预建仪表板上查看它们。
在概览仪表板中查看事件
editThe 概览 仪表板提供了以下内容的快速概览:
- 搜索
- 无结果
- 点击
- 会话
这使您能够快速检查这些事件的绝对数字和趋势(以百分比变化跟踪)。 在 搜索 > 行为分析 > 您的集合 > 概览 下找到此仪表板。
以下截图展示了一个示例概览仪表盘:
在探索者仪表板中查看事件
editThe Explorer dashboard provides a more detailed view of your events. Find this dashboard under Search > Behavioral Analytics> your-collection > Explorer.
在这里,您可以查找和搜索以下内容:
- 搜索词
- 点击最多的结果
- 无结果
- 位置
- 引荐来源
您还可以通过点击表头箭头轻松地按升序或降序排序。
以下截图展示了位置标签页,这是一个资源管理器仪表板,按降序列出了主要位置:
发现和Lens
edit如需更详细的分析,您可以在 Kibana 的 Discover 应用中查看事件。 Behavioral Analytics UI 将引导您从 Explorer 仪表板进入此处。 您可以使用 Discover 深入了解详情,然后使用 Lens 生成可视化效果。
Discover 与 数据视图 一起工作。
您会发现为您的集合自动创建了一个数据视图,名称为 behavioral_analytics.events-。
此数据视图将在数据视图下拉菜单中预先选择。
使用此菜单在不同集合的数据视图之间切换。
以下截图展示了在“发现”中如何找到数据视图下拉菜单:
Discover 有很多选项,但这里有一个快速入门概述:
-
通过搜索术语过滤您的数据,例如
search、page_view和search_click。 您将看到与您的搜索匹配的点击时间序列。 -
在字段名称搜索栏中搜索“event”。 例如:
-
选择
event.action。 您将找到所有已发送事件及其频率分布的列表。
-
选择
-
搜索
search.query以查找所有搜索查询。 - 选择 可视化 以创建 Lens 可视化。
以下截图展示了一个event.action分布的Lens可视化:
了解更多
edit阅读Discover文档。
阅读Lens 文档。
行为分析事件参考
edit行为分析日志使用Elastic Common Schema记录事件,包括用于分析事件的自定义字段集。 请参阅记录的完整数据对象的示例。
字段概览
edit常见事件字段
edit-
@timestamp - 事件的时间戳。
-
event.action -
事件的类型。可能的值是
search、search_click和pageview。 -
event.source -
事件的来源。可能的值是
client和server。 -
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客户端集成到您的网站上:
-
浏览器追踪器 - 通过使用
-
查看
READMEin GitHub。
-
查看
-
Javascript Tracker - 使用JavaScript模块集成到您的网站中。
-
查看
READMEin GitHub。
-
查看
搜索界面集成
edit为了简化将行为分析集成到您的网站中,我们提供了一个搜索界面集成。 此集成会在您的客户与您的搜索体验互动时,自动将行为分析事件发送到您的集合中。
请参阅Search UI 分析插件文档。
Searchkit 集成
edit行为分析还集成了Searchkit,这是一个用于在 Elasticsearch 之上构建用户界面的开源库。