copy_to
copy_to
The copy_to
parameter allows you to copy the values of multiple fields into a group field, which can then be queried as a single field.
If you often search multiple fields, you can improve search speeds by using copy_to
to search fewer fields. See Search as few fields as possible.
For example, the first_name
and last_name
fields can be copied to the full_name
field as follows:
PUT my-index-000001
{
"mappings": {
"properties": {
"first_name": {
"type": "text",
"copy_to": "full_name"
},
"last_name": {
"type": "text",
"copy_to": "full_name"
},
"full_name": {
"type": "text"
}
}
}
}
PUT my-index-000001/_doc/1
{
"first_name": "John",
"last_name": "Smith"
}
GET my-index-000001/_search
{
"query": {
"match": {
"full_name": {
"query": "John Smith",
"operator": "and"
}
}
}
}
The values of the | |
The |
Some important points:
- It is the field value which is copied, not the terms (which result from the analysis process).
- The original _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" ]
- You cannot copy recursively via intermediary fields such as a
copy_to
onfield_1
tofield_2
andcopy_to
onfield_2
tofield_3
expecting indexing intofield_1
will eventuate infield_3
, instead use copy_to directly to multiple fields from the originating field.
copy-to
is not supported for field types where values take the form of objects, e.g. date_range