Using the user_agent Processor in a Pipelineedit

Table 3. User-agent options

Name Required Default Description

field

yes

-

The field containing the user agent string.

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).

properties

no

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

Controls what properties are added to target_field.

ignore_missing

no

false

If true and field does not exist, the processor quietly exits without modifying the document


Here is an example that adds the user agent details to the user_agent field based on the agent field:

PUT _ingest/pipeline/user_agent
{
  "description" : "Add user agent information",
  "processors" : [
    {
      "user_agent" : {
        "field" : "agent"
      }
    }
  ]
}
PUT my_index/_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/_doc/my_id

Which returns

{
  "found": true,
  "_index": "my_index",
  "_type": "_doc",
  "_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"
    }
  }
}

Using a custom regex fileedit

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 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.

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