用户代理处理器

编辑

user_agent 处理器从浏览器发送的 Web 请求中的用户代理字符串中提取详细信息。默认情况下,此处理器将这些信息添加到 user_agent 字段下。

ingest-user-agent 模块默认附带由 uap-java 提供的 regexes.yaml 文件,该文件使用 Apache 2.0 许可证。有关更多详细信息,请参见 https://github.com/ua-parser/uap-core

在管道中使用 user_agent 处理器

编辑

表 50. 用户代理选项

名称 必需 默认值 描述

field

-

包含用户代理字符串的字段。

target_field

user_agent

将填充用户代理详细信息的字段。

regex_file

-

位于 config/ingest-user-agent 目录中的文件的名称,其中包含用于解析用户代理字符串的正则表达式。目录和文件都必须在启动 Elasticsearch 之前创建。如果未指定,ingest-user-agent 将使用它附带的来自 uap-core 的 regexes.yaml(见下文)。

properties

[name, major, minor, patch, build, os, os_name, os_major, os_minor, device]

控制将哪些属性添加到 target_field

extract_device_type

[测试版] 此功能为测试版,可能会发生更改。其设计和代码不如正式 GA 功能成熟,并且按原样提供,不提供任何保证。测试版功能不受正式 GA 功能的支持 SLA 的约束。 在尽力而为的基础上,从用户代理字符串中提取设备类型。

ignore_missing

如果 truefield 不存在,则处理器会静默退出,而不修改文档

以下是一个示例,该示例根据 agent 字段将用户代理详细信息添加到 user_agent 字段

resp = client.ingest.put_pipeline(
    id="user_agent",
    description="Add user agent information",
    processors=[
        {
            "user_agent": {
                "field": "agent"
            }
        }
    ],
)
print(resp)

resp1 = client.index(
    index="my-index-000001",
    id="my_id",
    pipeline="user_agent",
    document={
        "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
    },
)
print(resp1)

resp2 = client.get(
    index="my-index-000001",
    id="my_id",
)
print(resp2)
response = client.ingest.put_pipeline(
  id: 'user_agent',
  body: {
    description: 'Add user agent information',
    processors: [
      {
        user_agent: {
          field: 'agent'
        }
      }
    ]
  }
)
puts response

response = client.index(
  index: 'my-index-000001',
  id: 'my_id',
  pipeline: 'user_agent',
  body: {
    agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'
  }
)
puts response

response = client.get(
  index: 'my-index-000001',
  id: 'my_id'
)
puts response
const response = await client.ingest.putPipeline({
  id: "user_agent",
  description: "Add user agent information",
  processors: [
    {
      user_agent: {
        field: "agent",
      },
    },
  ],
});
console.log(response);

const response1 = await client.index({
  index: "my-index-000001",
  id: "my_id",
  pipeline: "user_agent",
  document: {
    agent:
      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
  },
});
console.log(response1);

const response2 = await client.get({
  index: "my-index-000001",
  id: "my_id",
});
console.log(response2);
PUT _ingest/pipeline/user_agent
{
  "description" : "Add user agent information",
  "processors" : [
    {
      "user_agent" : {
        "field" : "agent"
      }
    }
  ]
}
PUT my-index-000001/_doc/my_id?pipeline=user_agent
{
  "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
}
GET my-index-000001/_doc/my_id

它返回

{
  "found": true,
  "_index": "my-index-000001",
  "_id": "my_id",
  "_version": 1,
  "_seq_no": 22,
  "_primary_term": 1,
  "_source": {
    "agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
    "user_agent": {
      "name": "Chrome",
      "original": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
      "version": "51.0.2704.103",
      "os": {
        "name": "Mac OS X",
        "version": "10.10.5",
        "full": "Mac OS X 10.10.5"
      },
      "device" : {
        "name" : "Mac"
      }
    }
  }
}

使用自定义正则表达式文件

编辑

要使用自定义正则表达式文件解析用户代理,该文件必须放入 config/ingest-user-agent 目录,并且必须具有 .yml 文件扩展名。该文件必须在节点启动时存在,在节点运行时对其进行的任何更改或添加的任何新文件都不会产生任何影响。

实际上,任何自定义正则表达式文件最合理的情况都是默认文件的变体,要么是更新的版本,要么是自定义版本。

包含在 ingest-user-agent 中的默认文件是来自 uap-core 的 regexes.yamlhttps://github.com/ua-parser/uap-core/blob/master/regexes.yaml

节点设置

编辑

user_agent 处理器支持以下设置

ingest.user_agent.cache_size
应缓存的最大结果数。默认为 1000

请注意,这些设置是节点设置,适用于所有 user_agent 处理器,即,所有定义的 user_agent 处理器都有一个缓存。