/** * Performs an analysis of an available metadata properties/mapping * for a particula document type. * * @param metadataProperties * the ElasticSearch mapping * @param documentType * the name of the index type * @return a table definition for ElasticSearch. */ private static SimpleTableDef detectTable(final Map<String, Object> metadataProperties, final String documentType) { final ElasticSearchMetaData metaData = ElasticSearchMetaDataParser.parse(metadataProperties); return new SimpleTableDef(documentType, metaData.getColumnNames(), metaData.getColumnTypes()); }
/** * Parses the ElasticSearch meta data info into an ElasticSearchMetaData * object. This method makes much easier to create the ElasticSearch schema. * * @param metaDataInfo * ElasticSearch mapping metadata in Map format * @return An ElasticSearchMetaData object */ public static ElasticSearchMetaData parse(Map<String, ?> metaDataInfo) { final String[] fieldNames = new String[metaDataInfo.size() + 1]; final ColumnType[] columnTypes = new ColumnType[metaDataInfo.size() + 1]; // add the document ID field (fixed) fieldNames[0] = ElasticSearchUtils.FIELD_ID; columnTypes[0] = ColumnType.STRING; int i = 1; for (Entry<String, ?> metaDataField : metaDataInfo.entrySet()) { @SuppressWarnings("unchecked") final Map<String, ?> fieldMetadata = (Map<String, ?>) metaDataField.getValue(); fieldNames[i] = metaDataField.getKey(); columnTypes[i] = getColumnTypeFromMetadataField(fieldMetadata); i++; } return new ElasticSearchMetaData(fieldNames, columnTypes); }
final Map<String, ?> metadataPropertiesMap = (Map<String, ?>) metadataProperties; final ElasticSearchMetaData metaData = ElasticSearchMetaDataParser.parse(metadataPropertiesMap); final SimpleTableDef std = new SimpleTableDef(documentType, metaData.getColumnNames(), metaData.getColumnTypes()); return std;
/** * Parses the ElasticSearch meta data info into an ElasticSearchMetaData * object. This method makes much easier to create the ElasticSearch schema. * * @param metaDataInfo * ElasticSearch mapping metadata in Map format * @return An ElasticSearchMetaData object */ public static ElasticSearchMetaData parse(Map<String, ?> metaDataInfo) { final String[] fieldNames = new String[metaDataInfo.size() + 1]; final ColumnType[] columnTypes = new ColumnType[metaDataInfo.size() + 1]; // add the document ID field (fixed) fieldNames[0] = ElasticSearchUtils.FIELD_ID; columnTypes[0] = ColumnType.STRING; int i = 1; for (Entry<String, ?> metaDataField : metaDataInfo.entrySet()) { @SuppressWarnings("unchecked") final Map<String, ?> fieldMetadata = (Map<String, ?>) metaDataField.getValue(); fieldNames[i] = metaDataField.getKey(); columnTypes[i] = getColumnTypeFromMetadataField(fieldMetadata); i++; } return new ElasticSearchMetaData(fieldNames, columnTypes); }
final Map<String, ?> metadataPropertiesMap = (Map<String, ?>) metadataProperties; final ElasticSearchMetaData metaData = ElasticSearchMetaDataParser.parse(metadataPropertiesMap); final SimpleTableDef std = new SimpleTableDef(documentType, metaData.getColumnNames(), metaData.getColumnTypes()); return std;