如何在SOLR中更新数据?

时间:2017-08-18 09:24:44

标签: solr

您好我有一个名为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更新集合中的数据。

1 个答案:

答案 0 :(得分:0)

如果assetId未被定义为集合的uniqueKey,则允许重复(..或者如果您说我希望这是重复的话)。如果assetId是文档的唯一键,请将其定义为并让Solr更新已存储的文档。

该字段也应该被定义为字符串字段(而不是文本),因此您不必在其上执行标记化等。