|
@@ -5,9 +5,92 @@
|
|
|
By default, each hit in the search response includes the document
|
|
|
<<mapping-source-field,`_source`>>, which is the entire JSON object that was
|
|
|
provided when indexing the document. If you only need certain fields in the
|
|
|
-search response, you can use
|
|
|
-<<request-body-search-source-filtering,source filtering>> to restrict what
|
|
|
-parts of the source are returned.
|
|
|
+search response, you can use the
|
|
|
+<<request-body-search-source-filtering,`_source`>> parameter to restrict what
|
|
|
+parts of the source are returned. This is called _source filtering_.
|
|
|
+
|
|
|
+.*Example*
|
|
|
+[%collapsible]
|
|
|
+====
|
|
|
+The following search API request sets the `_source` request body parameter to
|
|
|
+`false`. The document source is not included in the response.
|
|
|
+
|
|
|
+[source,console]
|
|
|
+----
|
|
|
+GET /_search
|
|
|
+{
|
|
|
+ "_source": false,
|
|
|
+ "query": {
|
|
|
+ "term": {
|
|
|
+ "user.id": "8a4f500d"
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+----
|
|
|
+
|
|
|
+To return only a subset of source fields, specify a wildcard (`*`) pattern in
|
|
|
+the `_source` parameter. The following search API request returns the source for
|
|
|
+only the `obj` field and its properties.
|
|
|
+
|
|
|
+[source,console]
|
|
|
+----
|
|
|
+GET /_search
|
|
|
+{
|
|
|
+ "_source": "obj.*",
|
|
|
+ "query": {
|
|
|
+ "term": {
|
|
|
+ "user.id": "8a4f500d"
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+----
|
|
|
+
|
|
|
+You can also specify an array of wildcard patterns in the `_source` field. The
|
|
|
+following search API request returns the source for only the `obj1` and
|
|
|
+`obj2` fields and their properties.
|
|
|
+
|
|
|
+[source,console]
|
|
|
+----
|
|
|
+GET /_search
|
|
|
+{
|
|
|
+ "_source": [ "obj1.*", "obj2.*" ],
|
|
|
+ "query": {
|
|
|
+ "term": {
|
|
|
+ "user.id": "8a4f500d"
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+----
|
|
|
+
|
|
|
+For finer control, you can specify an object containing arrays of `includes` and
|
|
|
+`excludes` patterns in the `_source` parameter.
|
|
|
+
|
|
|
+If the `includes` property is specified, only source fields that match one of
|
|
|
+its patterns are returned. You can exclude fields from this subset using the
|
|
|
+`excludes` property.
|
|
|
+
|
|
|
+If the `includes` property is not specified, the entire document source is
|
|
|
+returned, excluding any fields that match a pattern in the `excludes` property.
|
|
|
+
|
|
|
+The following search API request returns the source for only the `obj1` and
|
|
|
+`obj2` fields and their properties, excluding any child `description` fields.
|
|
|
+
|
|
|
+[source,console]
|
|
|
+----
|
|
|
+GET /_search
|
|
|
+{
|
|
|
+ "_source": {
|
|
|
+ "includes": [ "obj1.*", "obj2.*" ],
|
|
|
+ "excludes": [ "*.description" ]
|
|
|
+ },
|
|
|
+ "query": {
|
|
|
+ "term": {
|
|
|
+ "user.id": "8a4f500d"
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+----
|
|
|
+====
|
|
|
|
|
|
Returning fields using only the document source has some limitations:
|
|
|
|