Back to Elasticsearch

URI parts processor [uri-parts-processor]

docs/reference/enrich-processor/uri-parts-processor.md

9.4.02.8 KB
Original Source

URI parts processor [uri-parts-processor]

Parses a Uniform Resource Identifier (URI) string and extracts its components as an object. This URI object includes properties for the URI’s domain, path, fragment, port, query, scheme, user info, username, and password.

$$$uri-parts-options$$$

NameRequiredDefaultDescription
fieldyes-Field containing the URI string.
target_fieldnourlOutput field for the URI object.
keep_originalnotrueIf true, the processor copies the unparsed URI to <target_field>.original.
remove_if_successfulnofalseIf true, the processor removes the field after parsing the URI string. If parsing fails, the processor does notremove the field.
ignore_missingnofalseIf true and field does not exist, the processor quietly exits without modifying the document
descriptionno-Description of the processor. Useful for describing the purpose of the processor or its configuration.
ifno-Conditionally execute the processor. See Conditionally run a processor.
ignore_failurenofalseIgnore failures for the processor. See Handling pipeline failures.
on_failureno-Handle failures for the processor. See Handling pipeline failures.
tagno-Identifier for the processor. Useful for debugging and metrics.

Here is an example definition of the URI parts processor:

js
{
  "description" : "...",
  "processors" : [
    {
      "uri_parts": {
        "field": "input_field",
        "target_field": "url",
        "keep_original": true,
        "remove_if_successful": false
      }
    }
  ]
}

% NOTCONSOLE

When the above processor executes on the following document:

js
{
  "_source": {
    "input_field": "http://myusername:mypassword@<example-url>:80/foo.gif?key1=val1&key2=val2#fragment"
  }
}

% NOTCONSOLE

It produces this result:

js
"_source" : {
  "input_field" : "http://myusername:mypassword@<example-url>:80/foo.gif?key1=val1&key2=val2#fragment",
  "url" : {
    "path" : "/foo.gif",
    "fragment" : "fragment",
    "extension" : "gif",
    "password" : "mypassword",
    "original" : "http://myusername:mypassword@<example-url>:80/foo.gif?key1=val1&key2=val2#fragment",
    "scheme" : "http",
    "port" : 80,
    "user_info" : "myusername:mypassword",
    "domain" : "www.example.com",
    "query" : "key1=val1&key2=val2",
    "username" : "myusername"
  }
}

% NOTCONSOLE