要使用Java API应用Elasticsearch映射,
步骤1)首先在json文件中为Elasticsearch类型创建映射,
例如。
resources/Customer.json
{ "Customer" : { "settings" : { }, "properties" : { "category" : { "type":"String" , "index" : "not_analyzed"}} } } }}STEP
2)创建一个Java方法以应用json文件中的映射(请参见此处的完整示例)
class EsUtils { public static Client client public static void applyMapping(String index, String type, String location) throws Exception { String source = readJsonDefn(location); if (source != null) { PutMappingRequestBuilder pmrb = client.admin().indices() .preparePutMapping(index) .setType(type); pmrb.setSource(source); MappingListener mappingListener = new MappingListener(pmrb) // Create type and mapping Thread thread = new Thread(mappingListener) thread.start(); while (!mappingListener.processComplete.get()) { System.out.println("not complete yet. Waiting for 100 ms") Thread.sleep(100); } } else { System.out.println("mapping error"); } } public static String readJsonDefn(String url) throws Exception { //implement it the way you like StringBuffer bufferJSON = new StringBuffer(); FileInputStream input = new FileInputStream(new File(url).absolutePath); DataInputStream inputStream = new DataInputStream(input); BufferedReader br = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = br.readLine()) != null) { bufferJSON.append(line); } br.close(); return bufferJSON.toString(); } }第3步)通过您的es客户端调用applyMapping()方法,
String index = "search"; //yourIndexString type = "Customer";String location = "resources/Customer.json";EsUtils.client = yourClient; //pass your clientEsUtils.applyMapping(index, type, location);
步骤4)根据需要进行查询 ,
SearchRequestBuilder builder = client.prepareSearch("search");builder.addAggregation(AggregationBuilders.terms("categoryterms") .field("category").size(0))SearchResponse response = builder.execute().actionGet();完整参考
Elasticsearch应用映射



