Solr存储映射而不是原子更新

时间:2018-02-20 19:54:19

标签: solr atomic

当尝试执行“字段”的原子更新时,我最终得到了一个存储在那里的地图(比如'add = something')而不是原子添加操作。该字段存储,docValues和multiValued。无法得到:我做错了什么?

    ...
    final SolrQuery query = new SolrQuery("tag:(" + term + ')');

    final AddUpdateCommand addUpdateCommand;
    final SolrQueryRequest queryRequest = new LocalSolrQueryRequest(targetCore, query)
    addUpdateCommand = new AddUpdateCommand(queryRequest);

    final SolrInputDocument document = new SolrInputDocument();
    document.addField("tag", term);
    document.addField("fields", ImmutableMap.of("add", fieldName));

    addUpdateCommand.solrDoc = document;
    assert AtomicUpdateDocumentMerger.isAtomicUpdate(addUpdateCommand);

    updateHandler.addDoc(addUpdateCommand);
    ...

2 个答案:

答案 0 :(得分:0)

试试这个:

Map<String,Object> fieldModifier = new HashMap<>(1);
fieldModifier.put("add",fieldName);
sdoc.addField("fields", fieldModifier);  // add the map as the field value

答案 1 :(得分:0)

我实际上最终只是存储List而不是Map,手动更新必要字段的内容。由于某种原因原子更新不起作用。