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:

ClusterState cs = client.admin().cluster().prepareState().setFilterIndices("myIndex").execute().actionGet().getState();
IndexMetaData imd = cs.getMetaData().index("myIndex")
MappingMetaData mdd = imd.mapping("myType")



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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值