use of com.enonic.xp.index.IndexType in project xp by enonic.
the class CreateRepositoryHandler method setIndexDefinitions.
public void setIndexDefinitions(final ScriptValue data) {
if (data != null) {
final Map<String, Object> indexDefinitionsMap = data.getMap();
final IndexDefinitions.Builder indexDefinitionsBuilder = IndexDefinitions.create();
for (IndexType indexType : IndexType.values()) {
final Map indexDefinitionMap = (Map) indexDefinitionsMap.get(indexType.getName());
if (indexDefinitionMap != null) {
final Map indexDefinitionSettingsMap = (Map) indexDefinitionMap.get("settings");
IndexSettings indexSettings = indexDefinitionSettingsMap == null ? null : new IndexSettings(createJson(indexDefinitionSettingsMap));
final Map indexDefinitionMappingMap = (Map) indexDefinitionMap.get("mapping");
IndexMapping indexMapping = indexDefinitionMappingMap == null ? null : new IndexMapping(createJson(indexDefinitionMappingMap));
final IndexDefinition indexDefinition = IndexDefinition.create().settings(indexSettings).mapping(indexMapping).build();
indexDefinitionsBuilder.add(indexType, indexDefinition);
}
}
this.indexDefinitions = indexDefinitionsBuilder.build();
}
}
use of com.enonic.xp.index.IndexType in project xp by enonic.
the class RepositoryNodeTranslator method toIndexConfigs.
private static IndexDefinitions toIndexConfigs(final PropertyTree nodeData) {
final PropertySet indexConfigsSet = nodeData.getSet(INDEX_CONFIG_KEY);
if (indexConfigsSet != null) {
final IndexDefinitions.Builder indexConfigs = IndexDefinitions.create();
for (IndexType indexType : IndexType.values()) {
final PropertySet indexConfigSet = indexConfigsSet.getSet(indexType.getName());
if (indexConfigSet != null) {
final IndexDefinition.Builder indexConfig = IndexDefinition.create();
final PropertySet mappingSet = indexConfigSet.getSet(MAPPING_KEY);
indexConfig.mapping(mappingSet == null ? null : IndexMapping.from(mappingSet.toTree()));
final PropertySet settingsSet = indexConfigSet.getSet(SETTINGS_KEY);
indexConfig.settings(settingsSet == null ? null : IndexSettings.from(settingsSet.toTree()));
indexConfigs.add(indexType, indexConfig.build());
}
}
return indexConfigs.build();
}
return null;
}
use of com.enonic.xp.index.IndexType in project xp by enonic.
the class IndexServiceInternalImpl method createIndex.
@Override
public void createIndex(final com.enonic.xp.repo.impl.index.CreateIndexRequest request) {
final String indexName = request.getIndexName();
final IndexSettings indexSettings = request.getIndexSettings();
LOG.info("creating index {}", indexName);
CreateIndexRequest createIndexRequest = new CreateIndexRequest(indexName);
createIndexRequest.settings(indexSettings.getAsString());
if (request.getMappings() != null) {
for (Map.Entry<IndexType, IndexMapping> mappingEntry : request.getMappings().entrySet()) {
createIndexRequest.mapping(mappingEntry.getKey().isDynamicTypes() ? ES_DEFAULT_INDEX_TYPE_NAME : mappingEntry.getKey().getName(), mappingEntry.getValue().getAsString());
}
}
try {
final CreateIndexResponse createIndexResponse = client.admin().indices().create(createIndexRequest).actionGet(CREATE_INDEX_TIMEOUT);
LOG.info("Index {} created with status {}", indexName, createIndexResponse.isAcknowledged());
} catch (ElasticsearchException e) {
throw new IndexException("Failed to create index: " + indexName, e);
}
}
use of com.enonic.xp.index.IndexType in project xp by enonic.
the class RepositoryNodeTranslator method toNodeData.
private static void toNodeData(final IndexDefinitions indexDefinitions, final PropertyTree data) {
if (indexDefinitions != null) {
final PropertySet indexConfigsPropertySet = data.addSet(INDEX_CONFIG_KEY);
for (IndexType indexType : IndexType.values()) {
final IndexDefinition indexDefinition = indexDefinitions.get(indexType);
if (indexDefinition != null) {
final PropertySet indexConfigPropertySet = indexConfigsPropertySet.addSet(indexType.getName());
final IndexMapping indexMapping = indexDefinition.getMapping();
if (indexMapping != null) {
final PropertySet indexMappingPropertySet = JsonToPropertyTreeTranslator.translate(indexMapping.getNode()).getRoot();
indexConfigPropertySet.setSet(MAPPING_KEY, indexMappingPropertySet);
}
final IndexSettings indexSettings = indexDefinition.getSettings();
if (indexSettings != null) {
final PropertySet indexSettingsPropertySet = JsonToPropertyTreeTranslator.translate(indexSettings.getNode()).getRoot();
indexConfigPropertySet.setSet(SETTINGS_KEY, indexSettingsPropertySet);
}
}
}
}
}
use of com.enonic.xp.index.IndexType in project xp by enonic.
the class RepositoryMapper method serialize.
private void serialize(final MapGenerator gen, final IndexDefinitions indexDefinitions) {
if (indexDefinitions != null) {
gen.map("definitions");
for (IndexType indexType : IndexType.values()) {
final IndexDefinition indexDefinition = indexDefinitions.get(indexType);
if (indexDefinition != null) {
gen.map(indexType.getName());
if (indexDefinition.getSettings() != null) {
gen.map("settings");
serialize(gen, indexDefinition.getSettings().getNode());
gen.end();
}
if (indexDefinition.getMapping() != null) {
gen.map("mapping");
serialize(gen, indexDefinition.getMapping().getNode());
gen.end();
}
gen.end();
}
}
gen.end();
}
}
Aggregations