OpenSearch/docs/reference/mapping/params/copy-to.asciidoc

65 lines
1.6 KiB
Plaintext

[[copy-to]]
=== `copy_to`
The `copy_to` parameter allows you to create custom
<<mapping-all-field,`_all`>> fields. In other words, the values of multiple
fields can be copied into a group field, which can then be queried as a single
field. For instance, the `first_name` and `last_name` fields can be copied to
the `full_name` field as follows:
[source,js]
--------------------------------------------------
PUT /my_index
{
"mappings": {
"my_type": {
"properties": {
"first_name": {
"type": "string",
"copy_to": "full_name" <1>
},
"last_name": {
"type": "string",
"copy_to": "full_name" <1>
},
"full_name": {
"type": "string"
}
}
}
}
}
PUT /my_index/my_type/1
{
"first_name": "John",
"last_name": "Smith"
}
GET /my_index/_search
{
"query": {
"match": {
"full_name": { <2>
"query": "John Smith",
"operator": "and"
}
}
}
}
--------------------------------------------------
// AUTOSENSE
<1> The values of the `first_name` and `last_name` fields are copied to the
`full_name` field.
<2> The `first_name` and `last_name` fields can still be queried for the
first name and last name respectively, but the `full_name` field can be
queried for both first and last names.
Some important points:
* It is the field _value_ which is copied, not the terms (which result from the analysis process).
* The original <<mapping-source-field,`_source`>> field will not be modified to show the copied values.
* The same value can be copied to multiple fields, with `"copy_to": [ "field_1", "field_2" ]`