2016-07-05 03:42:29 -04:00
[[ingest-user-agent]]
=== Ingest user agent processor plugin
2016-07-01 09:49:43 -04:00
2016-07-05 03:42:29 -04:00
The `user_agent` processor extracts details from the user agent string a browser sends with its web requests.
This processor adds this information by default under the `user_agent` field.
2016-07-01 09:49:43 -04:00
2016-07-05 03:42:29 -04:00
The ingest-user-agent plugin ships by default with the regexes.yaml made available by uap-java with an Apache 2.0 license. For more details see https://github.com/ua-parser/uap-core.
2016-07-01 09:49:43 -04:00
2016-07-05 03:42:29 -04:00
[[ingest-user-agent-install]]
2016-07-01 09:49:43 -04:00
[float]
==== Installation
This plugin can be installed using the plugin manager:
[source,sh]
----------------------------------------------------------------
2016-07-05 03:42:29 -04:00
sudo bin/elasticsearch-plugin install ingest-user-agent
2016-07-01 09:49:43 -04:00
----------------------------------------------------------------
The plugin must be installed on every node in the cluster, and each node must
be restarted after installation.
2016-09-19 09:04:29 -04:00
This plugin can be downloaded for <<plugin-management-custom-url,offline install>> from
2016-10-07 13:17:10 -04:00
{plugin_url}/ingest-user-agent/ingest-user-agent-{version}.zip.
2016-09-12 09:34:44 -04:00
2016-07-05 03:42:29 -04:00
[[ingest-user-agent-remove]]
2016-07-01 09:49:43 -04:00
[float]
==== Removal
The plugin can be removed with the following command:
[source,sh]
----------------------------------------------------------------
2016-07-05 03:42:29 -04:00
sudo bin/elasticsearch-plugin remove ingest-user-agent
2016-07-01 09:49:43 -04:00
----------------------------------------------------------------
The node must be stopped before removing the plugin.
2016-07-05 03:42:29 -04:00
[[using-ingest-user-agent]]
==== Using the user_agent Processor in a Pipeline
2016-07-01 09:49:43 -04:00
2016-07-05 03:42:29 -04:00
[[ingest-user-agent-options]]
.User-agent options
2016-07-01 09:49:43 -04:00
[options="header"]
|======
| Name | Required | Default | Description
| `field` | yes | - | The field containing the user agent string.
2016-07-05 03:42:29 -04:00
| `target_field` | no | user_agent | The field that will be filled with the user agent details.
| `regex_file` | no | - | The name of the file in the `config/ingest-user-agent` directory containing the regular expressions for parsing the user agent string. Both the directory and the file have to be created before starting Elasticsearch. If not specified, ingest-user-agent will use the regexes.yaml from uap-core it ships with (see below).
2016-07-01 09:49:43 -04:00
| `properties` | no | [`name`, `major`, `minor`, `patch`, `build`, `os`, `os_name`, `os_major`, `os_minor`, `device`] | Controls what properties are added to `target_field`.
|======
2016-07-05 03:42:29 -04:00
Here is an example that adds the user agent details to the `user_agent` field based on the `agent` field:
2016-07-01 09:49:43 -04:00
[source,js]
--------------------------------------------------
2016-08-10 11:12:41 -04:00
PUT _ingest/pipeline/user_agent
2016-07-01 09:49:43 -04:00
{
2016-08-10 11:12:41 -04:00
"description" : "Add user agent information",
2016-07-01 09:49:43 -04:00
"processors" : [
{
2016-07-05 03:42:29 -04:00
"user_agent" : {
2016-07-01 09:49:43 -04:00
"field" : "agent"
}
}
]
}
2016-08-10 11:12:41 -04:00
PUT my_index/my_type/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/my_type/my_id
--------------------------------------------------
// CONSOLE
Which returns
[source,js]
--------------------------------------------------
{
"found": true,
"_index": "my_index",
"_type": "my_type",
"_id": "my_id",
"_version": 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",
"major": "51",
"minor": "0",
"patch": "2704",
"os_name": "Mac OS X",
"os": "Mac OS X 10.10.5",
"os_major": "10",
"os_minor": "10",
"device": "Other"
}
}
}
2016-07-01 09:49:43 -04:00
--------------------------------------------------
2016-08-10 11:12:41 -04:00
// TESTRESPONSE
2016-07-01 09:49:43 -04:00
===== Using a custom regex file
2016-07-05 03:42:29 -04:00
To use a custom regex file for parsing the user agents, that file has to be put into the `config/ingest-user-agent` directory and
2016-07-01 09:49:43 -04:00
has to have a `.yaml` filename extension. The file has to be present at node startup, any changes to it or any new files added
while the node is running will not have any effect.
In practice, it will make most sense for any custom regex file to be a variant of the default file, either a more recent version
or a customised version.
2016-07-05 03:42:29 -04:00
The default file included in `ingest-user-agent` is the `regexes.yaml` from uap-core: https://github.com/ua-parser/uap-core/blob/master/regexes.yaml