public void append4Update(BulkRequestBuilder bulkRequestBuilder, ESMapping mapping, Object pkVal, Map<String, Object> esFieldData) { if (mapping.get_id() != null) { bulkRequestBuilder .add(transportClient.prepareUpdate(mapping.get_index(), mapping.get_type(), pkVal.toString()) .setDoc(esFieldData)); } else { SearchResponse response = transportClient.prepareSearch(mapping.get_index()) .setTypes(mapping.get_type()) .setQuery(QueryBuilders.termQuery(mapping.getPk(), pkVal)) .setSize(MAX_BATCH_SIZE) .get(); for (SearchHit hit : response.getHits()) { bulkRequestBuilder .add(transportClient.prepareUpdate(mapping.get_index(), mapping.get_type(), hit.getId()) .setDoc(esFieldData)); } } }
/** * @param index 索引 * @param type 类型 * @param id d * @return d */ public UpdateRequestBuilder updateRequest(String index, String type, String id) { return client.prepareUpdate(index, type, id); }
@Override public void updateById(String index, String type, String id, String jsonStr) { transportClient.prepareUpdate(index, type,id) .setDoc(jsonStr, XContentType.JSON) .get(); }
/** * 更新数据 * ElasticSearch提供了根据索引名称,类别,文档ID来修改数据,修改的设置数据可以是Map,Json串,自带工具。我们实际开发一般用Json。 */ @Test public void testUpdate(){ JSONObject jsonObject=new JSONObject(); jsonObject.put("user", "锋哥"); jsonObject.put("postDate", "1989-11-11"); jsonObject.put("message", "学习Elasticsearch"); UpdateResponse response = client.prepareUpdate("twitter", "tweet", "1").setDoc(jsonObject.toString(),XContentType.JSON).get(); System.out.println("索引名称:"+response.getIndex()); System.out.println("类型:"+response.getType()); System.out.println("文档ID:"+response.getId()); System.out.println("当前实例状态:"+response.status()); }
/** * 修改 * * @param transportClient * @throws IOException */ private static void update(TransportClient transportClient) throws IOException { UpdateResponse updateResponse = transportClient.prepareUpdate("product_index", "product", "1") .setDoc(XContentFactory.jsonBuilder() .startObject() .field("product_name", "飞利浦电动牙刷 HX6700 促销优惠") .endObject()) .get(); logger.info("--------------------------------:" + updateResponse.getResult()); }
/** * 更新一条索引 (overwrite exists) * * @param index * @param type * @param id * @param source * @return */ public static UpdateResponse prepareUpdate(String index, String type, String id, Map source) { UpdateResponse response = getInstance().prepareUpdate(index, type, id).setDoc(source).get(); return response; }
.prepareUpdate(indexFormated, indexFormated, documentId) .setDoc(convertObjectToJsonString(source), XContentType.JSON).get();
/** * 批量更新 * * @param transportClient */ private static void batchUpdate(TransportClient transportClient) throws IOException { BulkRequestBuilder bulkRequestBuilder = transportClient.prepareBulk(); UpdateRequestBuilder updateRequestBuilder1 = transportClient.prepareUpdate("product_index", "product", "1") .setDoc(XContentFactory.jsonBuilder() .startObject() .field("product_name", "更新后的商品名称1") .endObject()); UpdateRequestBuilder updateRequestBuilder2 = transportClient.prepareUpdate("product_index", "product", "2") .setDoc(XContentFactory.jsonBuilder() .startObject() .field("product_name", "更新后的商品名称2") .endObject()); UpdateRequestBuilder updateRequestBuilder3 = transportClient.prepareUpdate("product_index", "product", "3") .setDoc(XContentFactory.jsonBuilder() .startObject() .field("product_name", "更新后的商品名称3") .endObject()); bulkRequestBuilder.add(updateRequestBuilder1); bulkRequestBuilder.add(updateRequestBuilder2); bulkRequestBuilder.add(updateRequestBuilder3); BulkResponse bulkResponse = bulkRequestBuilder.get(); for (BulkItemResponse bulkItemResponse : bulkResponse.getItems()) { logger.info("--------------------------------version= " + bulkItemResponse.getVersion()); } }
@Override protected void updateDocument(SearchDocument doc) throws IOException { ElasticsearchDocument esDoc = (ElasticsearchDocument)doc; doUpdateRequest(client.prepareUpdate(esDoc.getIndex(), esDoc.getType(), esDoc.getId()).setVersion( esDoc.getVersion()).setDoc(esDoc.getSource())); }
return; UpdateRequestBuilder requestBuilder = client.prepareUpdate(config.index, config.type, id.toString()); requestBuilder.setDoc(map); requestBuilder.setDocAsUpsert(true);
return; UpdateRequestBuilder requestBuilder = client.prepareUpdate(config.index, config.type, id.toString()); requestBuilder.setDoc(map); requestBuilder.setDocAsUpsert(true);
UpdateRequest updateRequest = client.prepareUpdate() .setIndex(index) .setType(type)
@Override public void update(String index, String type, String id, UpdateOptions options, Handler<AsyncResult<JsonObject>> resultHandler) { UpdateRequestBuilder builder = client.prepareUpdate(index, type, id);