使用java sdk获取index alias映射的最佳方法是什么。
以下代码:
public MappingMetaData mapping() throws ApiException {
log.info("Calling mappings endpoint for index ");
ClusterState cs = client().admin().cluster().prepareState()
.setIndices("INDEX_NAME").execute().actionGet().getState();
IndexMetaData imd = cs.getMetaData().index("INDEX_NAME");
return imd.mapping("INDEX_NAME");
}
返回java.lang.NullPointerException。
如果使用http版
http://ES_SERVER:9200/INDEX_NAME/INDEX_TYPE/_mapping
而不是java sdk它可以正常工作,别名会自动扩展到真实的物理索引。
感谢您的帮助。
elasticsearch版本使用1.2.1
答案 0 :(得分:0)
ClusterState state = client.admin().cluster().prepareState().get().getState();
ImmutableOpenMap<String, MappingMetaData> mappings = state.getMetaData().index("your-index-name").getMappings();
for (ObjectObjectCursor<String, MappingMetaData> mapping : mappings) {
Object o = JSONObject.toJSON(mapping.value.getSourceAsMap());
System.out.println(o);
}