2017-08-18 14 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); 
    } 
} 

は、私は私がそのコレクションに新しいデータをinseringコレクションその更新されないデータを更新するためにAPIを打っていますSOLRCrudRepository.But毎回を使用して、更新SOLR収集データをしようとしています。

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

    } 

以前のコレクションには3つのレコードが含まれていましたが、現在は4つのレコードが含まれています。 assetIdに基づく可用性は更新されません。コレクションに新しいものが追加されます。

assetIdに基づいてコレクション内のデータを更新するために必要な変更。

答えて

0

assetIdがコレクションのuniqueKeyとして定義されていない場合は、複製が許可されます(または、私はこれを重複したいと言う場合)。 assetIdがドキュメントの一意のキーである場合は、それを定義し、Solrに既に保存されているドキュメントを更新させます。

このフィールドは、文字列フィールド(テキストではない)としても定義して、トークン化などを実行しないようにする必要があります。

関連する問題