读书人

Add 地图pings to an Elasticsearch i

发布时间: 2013-10-15 16:47:37 作者: rapoo

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


读书人网 >云计算

热点推荐