private function fieldToArray($name, $fieldMapping)
{
$mapping = array();
if (isset($fieldMapping['name'])) {
$mapping['fieldName'] = $fieldMapping['name'];
} else {
$mapping['fieldName'] = $name;
}
if (isset($fieldMapping['type'])) {
$mapping['type'] = $fieldMapping['type'];
if ($fieldMapping['type'] == 'multi_field' && isset($fieldMapping['fields'])) {
foreach ($fieldMapping['fields'] as $name => $subFieldMapping) {
$subFieldMapping = (array) $subFieldMapping;
$mapping['fields'][] = $this->fieldToArray($name, $subFieldMapping);
}
}
if (in_array($fieldMapping['type'], array('nested', 'object')) && isset($fieldMapping['properties'])) {
foreach ($fieldMapping['properties'] as $name => $subFieldMapping) {
$subFieldMapping = (array) $subFieldMapping;
$mapping['properties'][] = $this->fieldToArray($name, $subFieldMapping);
}
}
}
if (isset($fieldMapping['boost'])) {
$mapping['boost'] = $fieldMapping['boost'];
}
if (isset($fieldMapping['includeInAll'])) {
$mapping['includeInAll'] = (bool) $fieldMapping['includeInAll'];
}
if (isset($fieldMapping['index'])) {
$mapping['index'] = $fieldMapping['index'];
}
if (isset($fieldMapping['analyzer'])) {
$mapping['analyzer'] = $fieldMapping['analyzer'];
}
if (isset($fieldMapping['path'])) {
$mapping['path'] = $fieldMapping['path'];
}
if (isset($fieldMapping['indexName'])) {
$mapping['indexName'] = $fieldMapping['indexName'];
}
if (isset($fieldMapping['store'])) {
$mapping['store'] = (bool) $fieldMapping['store'];
}
if (isset($fieldMapping['nullValue'])) {
$mapping['nullValue'] = $fieldMapping['nullValue'];
}
if (isset($fieldMapping['geohash'])) {
$mapping['geohash'] = (bool) $fieldMapping['geohash'];
}
if (isset($fieldMapping['geohash_precision'])) {
$mapping['geohash_precision'] = $fieldMapping['geohash_precision'];
}
if (isset($fieldMapping['geohash_prefix'])) {
$mapping['geohash_prefix'] = (bool) $fieldMapping['geohash_prefix'];
}
return $mapping;
}