diff --git a/docs-mdx/painless/painless-field-context.mdx b/docs-mdx/painless/painless-field-context.mdx
new file mode 100644
index 0000000000000..8e3c38938b5b8
--- /dev/null
+++ b/docs-mdx/painless/painless-field-context.mdx
@@ -0,0 +1,136 @@
+---
+id: enElasticsearchPainlessPainlessFieldContext
+slug: /en/elasticsearch/painless/painless-field-context
+title: Field context
+description: Description to be written
+tags: []
+---
+
+
+
+Use a Painless script to create a
+[script field](((ref))/search-fields.html#script-fields) to return
+a customized value for each document in the results of a query.
+
+**Variables**
+
+`params` (`Map`, read-only)
+ : User-defined parameters passed in as part of the query.
+
+`doc` (`Map`, read-only)
+ : Contains the fields of the specified document where each field is a
+ `List` of values.
+
+[`params['_source']`](((ref))/mapping-source-field.html) (`Map`, read-only)
+ : Contains extracted JSON in a `Map` and `List` structure for the fields
+ existing in a stored document.
+
+**Return**
+
+`Object`
+ : The customized value for each document.
+
+**API**
+
+Both the standard Painless API and
+Specialized Field API are available.
+
+**Example**
+
+To run this example, first follow the steps in
+context examples.
+
+You can then use these two example scripts to compute custom information
+for each search hit and output it to two new fields.
+
+The first script gets the doc value for the `datetime` field and calls
+the `getDayOfWeekEnum` function to determine the corresponding day of the week.
+
+```Painless
+doc['datetime'].value.getDayOfWeekEnum().getDisplayName(TextStyle.FULL, Locale.ROOT)
+```
+
+The second script calculates the number of actors. Actors' names are stored
+as a keyword array in the `actors` field.
+
+```Painless
+doc['actors'].size() [^1]
+```
+[^1]: By default, doc values are not available for `text` fields. If `actors` was
+a `text` field, you could still calculate the number of actors by extracting
+values from `_source` with `params['_source']['actors'].size()`.
+
+The following request returns the calculated day of week and the number of
+actors that appear in each play:
+
+```console
+GET seats/_search
+{
+ "size": 2,
+ "query": {
+ "match_all": {}
+ },
+ "script_fields": {
+ "day-of-week": {
+ "script": {
+ "source": "doc['datetime'].value.getDayOfWeekEnum().getDisplayName(TextStyle.FULL, Locale.ROOT)"
+ }
+ },
+ "number-of-actors": {
+ "script": {
+ "source": "doc['actors'].size()"
+ }
+ }
+ }
+}
+```
+{/* TEST[setup:seats] */}
+
+```console-result
+{
+ "took" : 68,
+ "timed_out" : false,
+ "_shards" : {
+ "total" : 1,
+ "successful" : 1,
+ "skipped" : 0,
+ "failed" : 0
+ },
+ "hits" : {
+ "total" : {
+ "value" : 11,
+ "relation" : "eq"
+ },
+ "max_score" : 1.0,
+ "hits" : [
+ {
+ "_index" : "seats",
+ "_id" : "1",
+ "_score" : 1.0,
+ "fields" : {
+ "day-of-week" : [
+ "Thursday"
+ ],
+ "number-of-actors" : [
+ 4
+ ]
+ }
+ },
+ {
+ "_index" : "seats",
+ "_id" : "2",
+ "_score" : 1.0,
+ "fields" : {
+ "day-of-week" : [
+ "Thursday"
+ ],
+ "number-of-actors" : [
+ 1
+ ]
+ }
+ }
+ ]
+ }
+}
+```
+{/* TESTRESPONSE[s/"took" : 68/"took" : "$body.took"/] */}
\ No newline at end of file