使用的版本为6.2.2,需要安装ik插件,否者创建分词器会报错
1、创建链接客户端
public static TransportClient getBean(){ Settings settings = Settings.builder().put("cluster.name", "es-java").build(); // 创建client TransportClient client = null; try { client = new PreBuiltTransportClient(settings) .addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT)); } catch (UnknownHostException e) { e.printStackTrace(); } return client; }
2、创建mapping
public static void setMapping(){ try { XContentBuilder xContentBuilder = XContentFactory.jsonBuilder(); xContentBuilder.startObject() .startObject("person") .startObject("properties") .startObject("pid") .field("type","integer") .field("store",true) .endObject() .startObject("name") .field("type","text") .field("store",true) .field("analyzer","ik_smart") .endObject() .startObject("idCard") .field("type","text") .field("store",true) .field("analyzer","ik_smart") .endObject() .startObject("telphone") .field("type","integer") .field("store",true) .endObject() .startObject("bankCardNo") .field("type","integer") .field("store",true) .endObject() .endObject() .endObject() .endObject(); Settings settings = Settings.builder().put("cluster.name", "es-java").build(); // 创建client TransportClient client = new PreBuiltTransportClient(settings) .addTransportAddresses(new TransportAddress(InetAddress.getByName(HOST), PORT)); client.admin().indices().preparePutMapping("java-test") .setType("person") .setSource(xContentBuilder) .get(); client.close(); } catch (IOException e) { e.printStackTrace(); } }
3、插入doncument
public static void putDoncument(){ TransportClient client = getBean(); //BulkRequestBuilder bulkRequestBuilder = client.prepareBulk(); Person person = new Person(); person.setPid(4); person.setBankCardNo(123456789); person.setIdCard("3715211984111111"); person.setTelphone(1888888888); person.setName("安东尼和咱姆斯韦德"); //Map map = JSON.parseObject(JSONArray.toJSONString(person), Map.class); client.prepareIndex("java-test", "person", String.valueOf(person.getPid())) .setSource(JSONArray.toJSONString(person), XContentType.JSON).get(); //bulkRequestBuilder.add(request).get(); client.close(); }
4、按照id批量查询:
public static void query(){ IdsQueryBuilder queryBuilder = QueryBuilders.idsQuery().addIds("1","2"); TransportClient client = getBean(); SearchResponse searchResponse = client.prepareSearch("java-test").setTypes("person").setQuery(queryBuilder).get(); SearchHits hits = searchResponse.getHits(); long totalHits = hits.getTotalHits(); SearchHit[] hits1 = hits.getHits(); for (SearchHit documentFields : hits1) { String sourceAsString = documentFields.getSourceAsString(); System.out.println(sourceAsString); } System.out.println("totalhits"+totalHits); client.close(); }