您好我有一个名为AssetLocalUS的SOLR集合,其中包含此数据。
[
{
"assetId": "1-213Z-9335",
"availability": 1
},
{
"assetId": "1-213Z-1789",
"availability": 2
},
{
"assetId": "1-213Z-3452",
"availability": 3
}
]
我想在SOLR中基于AssetId'2-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尝试使用SOLRCrudRepository.But更新SOLR集合数据。每次我点击API来更新Collection时它不会更新数据,而是将新数据存入集合中。
{
"assetId": "1-213Z-9335",
"availability": 10000
}
早期的集合有3条记录,现在它将包含4条记录。因为它不会根据assetId更新可用性。它将为集合添加新内容。
我需要根据assetId更新集合中的数据。
答案 0 :(得分:0)
如果assetId未被定义为集合的uniqueKey
,则允许重复(..或者如果您说我希望这是重复的话)。如果assetId
是文档的唯一键,请将其定义为并让Solr更新已存储的文档。
该字段也应该被定义为字符串字段(而不是文本),因此您不必在其上执行标记化等。