2016-02-26 49 views
0

Solr的版本是5.4.1Solr的認爲有更新添加操作

我張貼這http://localhost:8983/solr/default-collection/update,它對待它就像我將整個文檔,而不是一個局部更新:

{ 
    "id": "0be0daa1-a6ee-46d0-ba05-717a9c6ae283", 
    "tags": { 
     "add": [ "news article" ] 
    } 
} 

在日誌中,我發現這個:

2016-02-26 14:07:50.831 ERROR (qtp2096057945-17) [c:default-collection s:shard1_1 r:core_node21 x:default-collection] o.a.s.h.RequestHandlerBase org.apache.solr.common.SolrException: [doc=0be0daa1-a6ee-46d0-ba05-717a9c6ae283] missing required field: data_type 
     at org.apache.solr.update.DocumentBuilder.toDocument(DocumentBuilder.java:198) 
     at org.apache.solr.update.AddUpdateCommand.getLuceneDocument(AddUpdateCommand.java:83) 
     at org.apache.solr.update.DirectUpdateHandler2.doNormalUpdate(DirectUpdateHandler2.java:273) 
     at org.apache.solr.update.DirectUpdateHandler2.addDoc0(DirectUpdateHandler2.java:207) 
     at org.apache.solr.update.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:169) 
     at org.apache.solr.update.processor.RunUpdateProcessor.processAdd(RunUpdateProcessorFactory.java:69) 

這是否有意義?我在一兩天前發送更新就像那樣,現在它的行爲就像更新請求是一個全新的文檔。

UPDATE我選擇的答案讓我朝正確的方向發展。我必須做的是糾正它是加載所有必需字段的現有字段,並將它們自己添加到有效負載中。然後它爲我工作。這不是自動的,這表明它可能是Solr中的一個bug 5.4.1

回答

2

如果我沒有錯,更新請求總是以加法操作結束。與部分更新的區別在於,Solr最初從索引獲取文檔,然後根據請求參數覆蓋字段,最後執行通常的文檔索引。

由於缺少必需的字段data_type,因此該文檔被拒絕:它應該在schema.xml中定義爲stored=true,或者每次發生部分更新時都將其添加到部分文檔字段中。其實這同樣適用於所有領域。