|
@@ -0,0 +1,82 @@
|
|
|
+[role="xpack"]
|
|
|
+[testenv="basic"]
|
|
|
+[[uri-parts-processor]]
|
|
|
+=== URI parts processor
|
|
|
+++++
|
|
|
+<titleabbrev>URI Parts</titleabbrev>
|
|
|
+++++
|
|
|
+
|
|
|
+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]]
|
|
|
+.URI Parts Options
|
|
|
+[options="header"]
|
|
|
+|======
|
|
|
+| Name | Required | Default | Description
|
|
|
+| `field` | yes | - | Field containing the URI string.
|
|
|
+| `target_field` | no | `url` | Output field for the URI object.
|
|
|
+| `keep_original` | no | true | If `true`, the processor copies the
|
|
|
+unparsed URI to `<target_field>.original`.
|
|
|
+| `remove_if_successful` | no | false | If `true`, the processor removes
|
|
|
+the `field` after parsing the URI string. If parsing fails, the processor does not
|
|
|
+remove the `field`.
|
|
|
+
|
|
|
+include::common-options.asciidoc[]
|
|
|
+|======
|
|
|
+
|
|
|
+Here is an example definition of the URI parts processor:
|
|
|
+
|
|
|
+[source,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:
|
|
|
+
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+{
|
|
|
+ "_source": {
|
|
|
+ "input_field": "http://myusername:mypassword@www.example.com:80/foo.gif?key1=val1&key2=val2#fragment"
|
|
|
+ }
|
|
|
+}
|
|
|
+--------------------------------------------------
|
|
|
+// NOTCONSOLE
|
|
|
+
|
|
|
+It produces this result:
|
|
|
+
|
|
|
+[source,js]
|
|
|
+--------------------------------------------------
|
|
|
+"_source" : {
|
|
|
+ "input_field" : "http://myusername:mypassword@www.example.com:80/foo.gif?key1=val1&key2=val2#fragment",
|
|
|
+ "url" : {
|
|
|
+ "path" : "/foo.gif",
|
|
|
+ "fragment" : "fragment",
|
|
|
+ "extension" : "gif",
|
|
|
+ "password" : "mypassword",
|
|
|
+ "original" : "http://myusername:mypassword@www.example.com: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
|