用户代理处理器编辑

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

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

在管道中使用 user_agent 处理器编辑

表 48. 用户代理选项

名称 必需 默认值 描述

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

false

[beta] 此功能处于测试阶段,可能会发生变化。设计和代码不如正式 GA 功能成熟,按现状提供,不提供任何担保。测试版功能不受正式 GA 功能支持 SLA 的约束。 尽力从用户代理字符串中提取设备类型。

ignore_missing

false

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

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

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
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 处理器只有一个缓存。