我想用HttpWebRequest更新Solr中的現有記錄。我使用的Solr 4.3.0和我不要想要使用任何類似SolrNet的庫。我想要做的是在Solr中準備一些數據,然後對我的應用程序(使用SolrNet)執行查詢來測試準備好的數據是否在查詢時返回。如何使用HttpWebRequest在Solr中執行文檔的原子更新
我有兩個問題。
首先,在執行原子更新查詢時,Solr會抱怨缺少必填字段。我不想提供除uniqueID和正在更新的字段以外的任何字段,這是可能的嗎?
其次,似乎如果我做提供所有必填字段,Solr會創建一個新文檔。這導致我懷疑這個獨特的鍵不能正常工作。
唯一關鍵的是:像這樣
<field name="ObjectGuid" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
集:
<uniqueKey>ObjectGuid</uniqueKey>
我現在已經在我的Solr指數兩個文件,都具有相同的objectGUID ...
任何幫助非常感謝。
編輯: 感謝您的回覆。
1,2 一個例子更新文檔:
<add>
<doc>
<field name="ObjectGuid">33176f43-b446-481b-84e9-3facf4d71717</field>
<field name="MyDate" update="set">2013-07-14T08:25:09Z</field>
</doc>
</add>
謝謝你指出的注意事項。在我的架構中的字段都stored="true"
除以下兩種:
此外,一些<dynamicField>
節點具有stored="false"
是這兩種情況下可能的原因的問題?如果我正確地閱讀警告,如果我們沒有爲該方面添加任何修飾符,則行爲是默認的,不應該是默認的,並且不應該是默認的,並且不應該是默認的,並且不應該是默認的,並且不應該防止原子更新。)
最後 我覺得可能是在GUID字段區分大小寫的問題。我之前已經注意到這一點。我們使用DataHandler從數據庫中導入數據,Guid在數據庫中都是大寫的。我注意到(使用SolrNet時)Guid返回小寫,但需要提供給Solr大寫......有沒有其他人看到過這種行爲,如果有,有沒有辦法避免這種情況?
可以顯示您使用HttpWebRequest發送到Solr的更新查詢的示例。 –
爲了您的第一個qn,請參閱http://yonik.com/solr/atomic-updates/上的示例。我相信如果你正在做你的原子更新,第二個問題不會出現。 – arun
另外請確保您遵守了以下所有注意事項:https://wiki.apache.org/solr/Atomic_Updates#Caveats_and_Limitations,特別是關於將所有字段保存在Solr中的警告。 – arun