mirror of
https://github.com/elastic/elasticsearch.git
synced 2025-04-19 04:45:07 -04:00
[DOCS] Adds an MDX file for testing purposes. (#106165)
This commit is contained in:
parent
37542e6245
commit
4573921501
1 changed files with 136 additions and 0 deletions
136
docs-mdx/painless/painless-field-context.mdx
Normal file
136
docs-mdx/painless/painless-field-context.mdx
Normal file
|
@ -0,0 +1,136 @@
|
|||
---
|
||||
id: enElasticsearchPainlessPainlessFieldContext
|
||||
slug: /en/elasticsearch/painless/painless-field-context
|
||||
title: Field context
|
||||
description: Description to be written
|
||||
tags: []
|
||||
---
|
||||
|
||||
<div id="painless-field-context"></div>
|
||||
|
||||
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 <DocLink id="enElasticsearchPainlessPainlessApiReferenceShared">Painless API</DocLink> and
|
||||
<DocLink id="enElasticsearchPainlessPainlessApiReferenceField">Specialized Field API</DocLink> are available.
|
||||
|
||||
**Example**
|
||||
|
||||
To run this example, first follow the steps in
|
||||
<DocLink id="enElasticsearchPainlessPainlessContextExamples">context examples</DocLink>.
|
||||
|
||||
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"/] */}
|
Loading…
Add table
Reference in a new issue