如何获取索引别名的映射

时间:2014-07-01 12:59:15

标签: java elasticsearch

使用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

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