ES17-JAVA API文档管理

1.保存文档

能够经过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());
		
	}

2.获取文档

根据文档索引、类型、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);
	}

3.删除文档

/**
	 * 删除文档
	 * @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");
	}

4.更新文档

/**
	 * 更新文档内容
	 * 
	 * @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();
		}

	}

5.文档存在时更新不存在时新增

/**
	 * 若是更新内容不存在,建立文档
	 * 
	 * @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);
	}
相关文章
相关标签/搜索