Add 地图pings to an Elasticsearch index in realtime

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..");    }}