You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Clarify url.query usage to specify full query string format (#2488)
* Clarify url.query usage to specify full query string format
This update removes ambiguity around the url.query field by explicitly stating that it should contain the full query string, including compound parameters.
An example with multiple query parameters is added to reinforce this guidance. This helps prevent misinterpretation—such as splitting the query into an array of keywords—and promotes consistent, ECS-compliant implementations across ingestion pipelines and tools.
* Update CHANGELOG.next.md
* generated files from changes
* Trim trailing whitespace
* update to description and regenerated
* fixing changelog
* regenerated experimental fields as well
* tweaked definition one last time
* cleanup per review
---------
Co-authored-by: Michael Wolf <michael.wolf@elastic.co>
Co-authored-by: Kylie Meli <kylie.geller@elastic.co>
Copy file name to clipboardExpand all lines: docs/reference/ecs-url.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -23,7 +23,7 @@ URL fields provide support for complete or partial URLs, and supports the breaki
23
23
|$$$field-url-password$$$[url.password](#field-url-password)| Password of the request.<br><br>type: keyword | extended |
24
24
|$$$field-url-path$$$[url.path](#field-url-path)| Path of the request, such as "/search".<br><br>type: wildcard<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.path](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-path)| extended |
25
25
|$$$field-url-port$$$[url.port](#field-url-port)| Port of the request, such as 443.<br><br>type: long<br><br>example: `443`<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.port](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-port)| extended |
26
-
|$$$field-url-query$$$[url.query](#field-url-query)| The query field describes the query string of the request, such as "q=elasticsearch".<br><br>The `?` is excluded from the query string. If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.<br><br>type: keyword<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.query](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-query)| extended |
26
+
|$$$field-url-query$$$[url.query](#field-url-query)| The field contains the entire query string, excluding the leading `?` character, such as "q=elasticsearch".<br><br>If a URL contains no `?`, there is no query field. If there is a `?` but no query, the query field exists with an empty string. The `exists` query can be used to differentiate between the two cases.<br><br>type: keyword<br><br>example: `q=elasticsearch&sort=desc`<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.query](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-query)| extended |
27
27
|$$$field-url-registered-domain$$$[url.registered_domain](#field-url-registered-domain)| The highest registered url domain, stripped of the subdomain.<br><br>For example, the registered domain for "foo.example.com" is "example.com".<br><br>This value can be determined precisely with a list like the public suffix list (https://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".<br><br>type: keyword<br><br>example: `example.com`<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.registered_domain](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-registered-domain)| extended |
28
28
|$$$field-url-scheme$$$[url.scheme](#field-url-scheme)| Scheme of the request, such as "https".<br><br>Note: The `:` is not part of the scheme.<br><br>type: keyword<br><br>example: `https`<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.scheme](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-scheme)| extended |
29
29
|$$$field-url-subdomain$$$[url.subdomain](#field-url-subdomain)| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain.<br><br>For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period.<br><br>type: keyword<br><br>example: `east`<br><br>[](/reference/ecs-opentelemetry.md#ecs-opentelemetry-relation)[url.subdomain](https://opentelemetry.io/docs/specs/semconv/attributes-registry/url/#url-subdomain)| extended |
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.password,keyword,extended,,,Password of the request.
1576
1576
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.path,wildcard,extended,,,"Path of the request, such as ""/search""."
1577
1577
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.port,long,extended,,443,"Port of the request, such as 443."
1578
-
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.query,keyword,extended,,,Query string of the request.
1578
+
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.query,keyword,extended,,q=elasticsearch&sort=desc,Query string of the request.
1579
1579
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.registered_domain,keyword,extended,,example.com,"The highest registered url domain, stripped of the subdomain."
1580
1580
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.scheme,keyword,extended,,https,Scheme of the url.
1581
1581
9.3.0-dev+exp,true,threat,threat.enrichments.indicator.url.subdomain,keyword,extended,,east,The subdomain of the domain.
9.3.0-dev+exp,true,threat,threat.indicator.url.password,keyword,extended,,,Password of the request.
1799
1799
9.3.0-dev+exp,true,threat,threat.indicator.url.path,wildcard,extended,,,"Path of the request, such as ""/search""."
1800
1800
9.3.0-dev+exp,true,threat,threat.indicator.url.port,long,extended,,443,"Port of the request, such as 443."
1801
-
9.3.0-dev+exp,true,threat,threat.indicator.url.query,keyword,extended,,,Query string of the request.
1801
+
9.3.0-dev+exp,true,threat,threat.indicator.url.query,keyword,extended,,q=elasticsearch&sort=desc,Query string of the request.
1802
1802
9.3.0-dev+exp,true,threat,threat.indicator.url.registered_domain,keyword,extended,,example.com,"The highest registered url domain, stripped of the subdomain."
1803
1803
9.3.0-dev+exp,true,threat,threat.indicator.url.scheme,keyword,extended,,https,Scheme of the url.
1804
1804
9.3.0-dev+exp,true,threat,threat.indicator.url.subdomain,keyword,extended,,east,The subdomain of the domain.
0 commit comments