能够经过json工具把java对象转换成json字符串进行保存,也能够经过内置的帮助类直接构建json格式java
/** * 获取客户端 * * @return */ public static TransportClient getClient() { Settings settings = Settings.builder().put("cluster.name", "es_cluster").build(); TransportClient client = null; try { client = new PreBuiltTransportClient(settings) .addTransportAddress(new TransportAddress(InetAddress.getByName("10.118.213.215"), 9300)); } catch (UnknownHostException e) { e.printStackTrace(); } return client; } /** * 保存文档到索引中 * * @param indexName * @param typeName * @param id * @param docJson */ public static void insertDoc(String indexName, String typeName, String id, String docJson) { IndexResponse response = getClient().prepareIndex(indexName, typeName, id).setSource(docJson, XContentType.JSON) .get(); System.out.println(response.status()); }
测试保存json
public static void main(String[] args) throws Exception { // 时间格式转换 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"); // 保存数据 Telegraph telegraph = new Telegraph(); telegraph.setAuthor("财政部部长"); telegraph.setTitle("中方正在加快推动各项开放措施的落地"); telegraph.setContent("财联社7月23日讯,财政部部长刘昆指出,中方正在加快推动各项开放措施的落地。中国开放的大门将越开越大,不只促进中国高质量发展,也为全球经济增加提供重要动力"); telegraph.setPubdate(formatter.format(new Date())); // 对象转换为json字符串 String json = JSONObject.toJSONString(telegraph); System.out.println(json); insertDoc("telegraph", "msg", "1", json); // 使用内置帮助类XContentFactory构造json格式文档 XContentBuilder builder = XContentFactory.jsonBuilder().startObject().field("title", "长生生物官网被黑客攻击") .field("author", "长生生物") .field("content", "财联社7月23日讯,长生科技官网首页被黑客攻击,并配图“不搞你,对不起祖国的花朵”。打开长生生物的官网,显示网站已没法打开,错误提示404,截至发稿,网站还没有恢复") .field("pubdate", formatter.format(new Date())).endObject(); System.out.println(builder.string()); insertDoc("telegraph", "msg", "2", builder.string()); }
根据文档索引、类型、id获取文档内容工具
/** * 获取文档 * @param indexName * @param typeName * @param id * @return */ public static String getIndexDoc(String indexName, String typeName, String id) { GetResponse response = getClient().prepareGet(indexName, typeName, id).get(); System.out.println(response.getVersion()); return response.getSourceAsString(); }
测试获取文档测试
public static void main(String[] args) { String source = getIndexDoc("telegraph", "msg", "2"); System.out.println(source); }
/** * 删除文档 * @param indexName * @param typeName * @param id */ public static void deleteDoc(String indexName,String typeName,String id){ DeleteResponse response = getClient().prepareDelete(indexName, typeName, id).get(); System.out.println(response.status()); }
测试网站
public static void main(String[] args) { deleteDoc("telegraph", "msg", "1"); }
/** * 更新文档内容 * * @param indexName * @param typeName * @param id * @param fields * @throws Exception */ public static void updateDoc(String indexName, String typeName, String id, Map<String, Object> fields) throws Exception { UpdateRequest request = new UpdateRequest(); XContentBuilder builder = XContentFactory.jsonBuilder().startObject(); for (String key : fields.keySet()) { builder.field(key, fields.get(key)); } builder.endObject(); request.index(indexName).type(typeName).id(id).doc(builder); UpdateResponse response = getClient().update(request).get(); System.out.println(response.toString()); }
测试ui
public static void main(String[] args) { Map<String, Object> fields = new HashMap<String, Object>(); fields.put("title", "长生生物涉案狂犬病疫苗被指未做动物实验检测"); try { updateDoc("telegraph", "msg", "2", fields); } catch (Exception e) { e.printStackTrace(); } }
/** * 若是更新内容不存在,建立文档 * * @param indexName * @param typeName * @param id * @param indexDoc 添加内容 * @param updateField 更新内容 * @throws Exception */ public static void upset(String indexName, String typeName, String id, Map<String, Object> indexDoc, Map<String, Object> updateField) throws Exception { // 建立新增request IndexRequest indexRequest = new IndexRequest(indexName, typeName, id); XContentBuilder indexBuilder = XContentFactory.jsonBuilder().startObject(); for (String key : indexDoc.keySet()) { indexBuilder.field(key, indexDoc.get(key)); } indexBuilder.endObject(); System.out.println(indexBuilder.string()); indexRequest.source(indexBuilder); // 建立更新request UpdateRequest updateRequest = new UpdateRequest(indexName, typeName, id); XContentBuilder updateBuilder = XContentFactory.jsonBuilder().startObject(); for (String key : updateField.keySet()) { updateBuilder.field(key, updateField.get(key)); } updateBuilder.endObject(); System.out.println(updateBuilder.string()); updateRequest.doc(updateBuilder).upsert(indexRequest); UpdateResponse response = getClient().update(updateRequest).get(); System.out.println(response.toString()); }
测试spa
public static void main(String[] args) throws Exception{ //若是存在就更新 Map<String, Object> fields = new HashMap<String, Object>(); fields.put("title", "被更新以后title"); //若是不存在就新增 Map<String, Object> indexDoc = new HashMap<String, Object>(); indexDoc.put("title","第一次测试添加title"); indexDoc.put("content", "测试添加内容"); upset("telegraph","msg","2",indexDoc,fields); }