Add mappings to an Elasticsearch index in realtimeChanging mapping on existing index is not an easy
Add mappings to an Elasticsearch index in realtime
Changing mapping on existing index is not an easy task. You may find the reason and possible solutions in here:
http://www.elasticsearch.org/blog/changing-mapping-with-zero-downtime/
to get current mapping details, here is the sample code:
Put Mappings In Real time:private void putMapping() { if (client != null) { if (client.admin().indices().prepareExists(IndexName).execute().actionGet().isExists()) { XContentBuilder mappings = null; try { mappings = XContentFactory.jsonBuilder().startObject() .startObject(INDEX_TYPE) .startObject("properties").startObject(FIELD_NAME) .field("type","string") .field("store","yes") .field("index", "analyzed") .field("analyzer", "simple").endObject() .endObject() .endObject().endObject(); } catch (IOException e) { e.printStackTrace(); } client.admin().indices().prepareClose(IndexName).execute().actionGet(); client.admin().indices().prepareDeleteMapping(IndexName).setType(INDEX_TYPE).execute().actionGet(); client.admin().indices().preparePutMapping(IndexName).setIgnoreConflicts(true).setType(INDEX_TYPE).setSource(mappings).execute().actionGet(); client.admin().indices().prepareOpen(IndexName).execute().actionGet(); } } else {throw new IllegalStateException(" Elastic Search not initialized properly.."); }}
