用户代理处理器
编辑用户代理处理器
编辑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. 用户代理选项
名称 | 必需 | 默认值 | 描述 |
---|---|---|---|
|
是 |
- |
包含用户代理字符串的字段。 |
|
否 |
user_agent |
将填充用户代理详细信息的字段。 |
|
否 |
- |
位于 |
|
否 |
[ |
控制将哪些属性添加到 |
|
否 |
|
[测试版] 此功能为测试版,可能会发生更改。其设计和代码不如正式 GA 功能成熟,并且按原样提供,不提供任何保证。测试版功能不受正式 GA 功能的支持 SLA 的约束。 在尽力而为的基础上,从用户代理字符串中提取设备类型。 |
|
否 |
|
如果 |
以下是一个示例,该示例根据 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.yaml
: https://github.com/ua-parser/uap-core/blob/master/regexes.yaml
节点设置
编辑user_agent
处理器支持以下设置
-
ingest.user_agent.cache_size
- 应缓存的最大结果数。默认为
1000
。
请注意,这些设置是节点设置,适用于所有 user_agent
处理器,即,所有定义的 user_agent
处理器都有一个缓存。