We are working on updating this book for the latest version. Some content might be out of date.
In Metadata: _all Field, we explained that the special _all
field indexes the values
from all other fields as one big string.
Having all fields indexed into one
field is not terribly flexible, though. It would be nice to have one custom
_all
field for the person’s name, and another custom _all
field for the
address.
Elasticsearch provides us with this functionality via the copy_to
parameter
in a field
mapping:
PUT /my_index { "mappings": { "person": { "properties": { "first_name": { "type": "string", "copy_to": "full_name" }, "last_name": { "type": "string", "copy_to": "full_name" }, "full_name": { "type": "string" } } } } }
With this mapping in place, we can query the first_name
field for first
names, the last_name
field for last name, or the full_name
field for first
and last names.
Mappings of the first_name
and last_name
fields have no bearing
on how the full_name
field is indexed. The full_name
field copies the
string values from the other two fields, then indexes them according to the
mapping of the full_name
field only.