2017-08-18 36 views
0

嗨,我有一個名爲AssetLocalUS的SOLR集合,它包含這些數據。如何更新SOLR中的數據?

[ 
{ 
    "assetId": "1-213Z-9335", 
    "availability": 1 
}, 
{ 
    "assetId": "1-213Z-1789", 
    "availability": 2 
    }, 
    { 
     "assetId": "1-213Z-3452", 
     "availability": 3 
    } 

     ] 

我想根據SOLR中的AssetId'1-213Z-9335'更新可用性。

這是我的JAVA代碼。

private SolrCrudRepository<Asset, String> assetRepository; 

@Autowired 
private AssetEntityRepository assetEntityRep; 

@Autowired 
public AssetRequestServiceImpl(SolrCrudRepository<Asset, String> assetRepository) { 
    this.assetRepository = assetRepository; 
} 


@Override 
public ServiceResponse<?> processAssetRequests(Asset asset) { 
    System.out.println("Value of availability is==================:" + asset.getAvailability()); 
    Asset asset2 = null; 
    try { 
     logger.info("performing maintdb save for asset id: " + asset.getAssetId()); 
     assetEntityRep.save(asset.getAvailability()); 
     // TODO: Add Error handling 
     logger.info("performing solr save for asset id: " + asset.getAssetId()); 
     **asset2 = assetRepository.save(asset);** 
     // TODO: Add Error handling 
     return ServiceResponse.success(asset2); 
    } catch (Exception exception) { 
     logger.error(String.format("An error occured while processing asset request due to : %s", exception), 
       exception); 
     return ServiceResponse.error(Asset.class); 
    } 
} 

我試圖用SOLRCrudRepository.But每次我打API更新Collection中的未更新數據的insering新數據採集更新SOLR收集數據。

{ 
    "assetId": "1-213Z-9335", 
    "availability": 10000 

    } 

之前的集合有3條記錄,現在它將包含4條記錄。因爲它不會根據assetId更新可用性。它將增加新的收集。

我需要更改基於assetId更新集合中的數據。

回答

0

如果assetId沒有被定義爲集合的uniqueKey,那麼將允許重複(..或者如果你說我想這是一個複製)。如果assetId是您文檔的唯一鍵,請定義它,讓Solr更新已存儲的文檔。

該字段還應該定義爲一個字符串字段(而不是文本),因此您不會執行標記化等。