用户代理处理器
user_agent
处理器用于从用户代理字符串中提取信息,例如客户端使用的浏览器、设备和操作系统。 user_agent
处理器对于分析用户行为以及根据用户设备、操作系统和浏览器识别趋势特别有用。它还有助于解决特定用户代理配置的问题。
以下是 user_agent
处理器的语法
{
"processor": {
"user_agent": {
"field": "user_agent",
"target_field": "user_agent_info"
}
}
}
配置参数
下表列出了 user_agent
处理器所需和可选的参数。
参数 | 必需/可选 | 描述 |
---|---|---|
field | 必需 | 包含用户代理字符串的字段。 |
target_field | 可选 | 用于存储提取的用户代理信息的字段。如果未指定,则信息存储在 user_agent 字段中。 |
ignore_missing | 可选 | 指定处理器是否应忽略不包含指定 field 的文档。如果设置为 true ,则如果 field 不存在,处理器不会修改文档。默认值为 false 。 |
regex_file | 可选 | 包含用于解析用户代理字符串的正则表达式模式的文件。此文件应位于 OpenSearch 包内的 config/ingest-user-agent 目录中。如果未指定,则使用默认文件 regexes.yaml 。 |
properties | 可选 | 要从用户代理字符串中提取并添加到 target_field 的属性列表。如果未指定,则默认属性为 name 、major 、minor 、patch 、build 、os 、os_name 、os_major 、os_minor 和 device 。 |
description | 可选 | 处理器的简要描述。 |
if | 可选 | 运行处理器的条件。 |
ignore_failure | 可选 | 指定处理器即使遇到错误是否仍继续运行。如果设置为 true ,则忽略失败。默认值为 false 。 |
on_failure | 可选 | 处理器失败时要运行的处理器列表。 |
tag | 可选 | 处理器的标识符标签。有助于调试以区分相同类型的处理器。 |
使用处理器
按照以下步骤在管道中使用处理器。
步骤 1:创建管道
以下查询创建了一个名为 user_agent_pipeline
的管道,该管道使用 user_agent
处理器提取用户代理信息
PUT _ingest/pipeline/user_agent_pipeline
{
"description": "User agent pipeline",
"processors": [
{
"user_agent": {
"field": "user_agent",
"target_field": "user_agent_info"
}
}
]
}
步骤 2(可选):测试管道
建议在摄取文档之前测试您的管道。
要测试管道,请运行以下查询
POST _ingest/pipeline/user_agent_pipeline/_simulate
{
"pipeline": "user_agent_pipeline",
"docs": [
{
"_source": {
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
}
}
]
}
响应
以下示例响应确认管道按预期工作
{
"docs": [
{
"doc": {
"_index": "_index",
"_id": "_id",
"_source": {
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
"user_agent_info": {
"name": "Chrome",
"original": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3",
"os": {
"name": "Windows",
"version": "10",
"full": "Windows 10"
},
"device": {
"name": "Other"
},
"version": "58.0.3029.110"
}
},
"_ingest": {
"timestamp": "2024-04-25T21:41:28.744407425Z"
}
}
}
]
}
步骤 3:摄取文档
以下查询将文档摄取到名为 testindex1
的索引中
PUT testindex1/_doc/1?pipeline=user_agent_pipeline
{
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"
}
响应
上述请求将 user_agent
字符串解析为其组成部分,并将该文档以及所有包含这些组成部分的文档索引到 testindex1
索引中,如下面响应所示
{
"_index": "testindex1",
"_id": "1",
"_version": 66,
"result": "updated",
"_shards": {
"total": 2,
"successful": 1,
"failed": 0
},
"_seq_no": 65,
"_primary_term": 47
}
步骤 4(可选):检索文档
要检索文档,请运行以下查询
GET testindex1/_doc/1
响应
响应包括原始 user_agent
字段以及包含设备、操作系统和浏览器信息的已解析 user_agent_info
字段
{
"_index": "testindex1",
"_id": "1",
"_version": 66,
"_seq_no": 65,
"_primary_term": 47,
"found": true,
"_source": {
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
"user_agent_info": {
"original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36",
"os": {
"name": "Mac OS X",
"version": "10.15.7",
"full": "Mac OS X 10.15.7"
},
"name": "Chrome",
"device": {
"name": "Mac"
},
"version": "90.0.4430.212"
}
}
}