Solr/Lucene 更新查询从数据中删除属性

Solr/Lucene update query deletes attribute from data

我运行遇到一个问题,在运行更新查询后数据中缺少一个属性。

我运行一个select这样的查询:

卷曲“http://localhost:8080/solr/collection1/select?q=title%3AHans+head:true&fl=title,uid,articleId,missing_Attribute,my_otherAttribute&wt=json&indent=true

就returns一篇文章:

{ 
"title":"Hans", 
"uid":"18_UNIQUEID_123", 
"articleId":"123123123", 
"missing_Attribute":"M",
}

所以missing_Attribute = M,my_otherAttribute还没有出现。哪个好。

然后我 运行 使用以下方法对此文档进行更新查询: curl http://localhost:8080/solr/collection1/update?commit=true --data-binary @MyUpdate.json -H 'Content-type:application/json'

与 MyUpdate.json 为:

[
  {
    "uid": "18_UNIQUEID_123",
    "my_otherAttribute": {
      "set": "12"
    }
  }
]

和运行再次select查询,结果为:

{ 
"title":"Hans", 
"uid":"18_UNIQUEID_123", 
"articleId":"123123123", 
"my_otherAttribute":"12",
}

my_otherAttribute = 12 但是missing_Attribute不见了!

为什么我更新 my_otherAttribute 时 missing_Attribute 不见了?

为什么它不影响任何其他字段?

回答我自己的问题,答案是: https://wiki.apache.org/solr/Atomic_Updates

我面临的问题是我想对文档进行部分更新。我使用的是 Solr 4.10,所以理论上它可以工作。但前提是模式会支持它。而我们的没有。这就是属性消失的原因。