Mapping arrays
An array or a multivalue field is very common in data models (such as multiple phone numbers, addresses, names, aliases, and so on), but it is not natively supported in traditional SQL solutions.
In SQL, multivalue fields require the creation of accessory tables that must be joined in order to gather all the values, leading to poor performance when the cardinality of records is huge.
ElasticSearch, which works natively in JSON, provides support for multivalue fields transparently.
Getting ready
You need a working ElasticSearch cluster.
How to do it...
Every field is automatically managed as an array. For example, in order to store tags for a document, this is how the mapping must be:
{
"document" : {
"properties" : {
"name" : {"type" : "string", "index":"analyzed"},"tag" : {"type" : "string", "store" : "yes" , "index":"not_analyzed"},…
…
}
}
}
This mapping is valid for indexing this document:
{"name": "document1", "tag": "awesome"}
It can also be used for the following...