Skip to main content
Version: 1.1.0

URI Parts

Parse Elastic Compatible

Synopsis​

Parses a Uniform Resource Identifier (URI) string and extracts its components into a structured object.

Schema​

uri_parts:
- field: <ident>
- description: <text>
- if: <script>
- ignore_failure: <boolean>
- ignore_missing: <boolean>
- keep_original: <boolean>
- on_failure: <processor[]>
- on_success: <processor[]>
- remove_if_successful: <boolean>
- tag: <string>
- target_field: <ident>

Configuration​

FieldRequiredDefaultDescription
fieldY-Field containing the URI string
descriptionN-Explanatory note
ifN-Condition to run
ignore_failureNfalseSee Handling Failures
ignore_missingNfalseIf true, quietly exit if field doesn't exist
keep_originalNtrueInclude original URI in output
on_failureN-See Handling Failures
on_successN-See Handling Success
remove_if_successfulNfalseRemove source field after successful parsing
tagN-Identifier
target_fieldNurlField to store the parsed components

Details​

The processor extracts various URI components including scheme, domain, port, path, query parameters, fragment, user information, and file extension. Empty or zero-value components are omitted from the output.

warning

URIs with invalid syntax will cause the processor to fail unless ignore_failure is set to true.

Both IPv4 and IPv6 addresses are supported in the domain component.

security

For security reasons, be cautious when processing URIs with authentication information.

Examples​

Basic​

Parsing a complete URI...

{
"url": "http://myusername:mypassword@www.example.com:80/foo.gif?key1=val1&key2=val2#fragment"
}
uri_parts:
- field: url
- target_field: uri_parts

extracts all the components:

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

Omit Original​

Parsing a URI without keeping the original...

{
"url": "http://example.com:8080/path?q=search"
}
uri_parts:
- field: url
- target_field: parsed
- keep_original: false

outputs only the parsed components:

{
"parsed": {
"scheme": "http",
"domain": "example.com",
"port": 8080,
"path": "/path",
"query": "q=search"
}
}

Omit Source​

Removing the original field after parsing...

{
"source_url": "https://api.example.com/data.json"
}
uri_parts:
- field: source_url
- target_field: uri
- remove_if_successful: true

keeps only the parsed components:

{
"uri": {
"scheme": "https",
"domain": "api.example.com",
"path": "/data.json",
"extension": "json",
"original": "https://api.example.com/data.json"
}
}