private function initIndexConfig(array $indexConfigData)
{
$types = [];
foreach ($indexConfigData['types'] as $typeName => $typeConfigData) {
$datasources = [];
$staticFields = [];
foreach ($typeConfigData['datasources'] as $datasourceName => $datasourceClass) {
$datasources[$datasourceName] = $this->objectManager->get($datasourceClass);
}
$dynamicFieldProviders = array_filter($datasources, array($this, 'isDynamicFieldsProvider'));
foreach ($typeConfigData['mapping']['staticFields'] as $fieldName => $fieldConfig) {
$staticFields[$fieldName] = $this->mappingFieldFactory->create($fieldConfig + ['name' => $fieldName]);
}
$mapping = $this->mappingFactory->create(['staticFields' => $staticFields, 'dynamicFieldProviders' => $dynamicFieldProviders, 'idFieldName' => $typeConfigData['idFieldName']]);
$types[$typeName] = $this->typeFactory->create(['name' => $typeName, 'datasources' => $datasources, 'mapping' => $mapping]);
}
$defaultSearchType = $indexConfigData['defaultSearchType'];
return ['types' => $types, 'defaultSearchType' => $defaultSearchType];
}