我需要經常更新solr中的大量文檔。例如,爲user_id = 5設置「online」= true,依此類推。但通過http處理程序索引的速度非常慢。 Solr支持通過查詢刪除文件,有沒有辦法通過查詢進行更新?通過查詢更新Solr索引
回答
不幸的是,沒有任何功能像查詢更新。這將是非常有用的,就像一個新功能,可以更新文檔而無需重新提交;那裏有一個5歲的jira issue。現在,如果您使用相同的uniqueKey
,那麼您應該重新提交包含更新字段的文檔,它們將被覆蓋(這意味着已刪除並重新插入)。
順便說一句,你是否在爲每個文檔發出一個http請求來更新?如果是的話,你可以在這樣的時刻更快提交超過一份文件:
<add>
<doc>
<field name="employeeId">05991</field>
<field name="office">Bridgewater</field>
</doc>
<doc>
<field name="employeeId">05992</field>
<field name="office">Bridgewater</field>
</doc>
<doc>
<field name="employeeId">05993</field>
<field name="office">Bridgewater</field>
</doc>
</add>
由於javanna回答,沒有任何設施通過查詢來更新,如Solr的也不允許你更新各個領域在存儲在索引中的文檔中,重新提交是唯一的更新方法。我很好奇,但爲什麼你的更新速度如此之慢。以下是一些可以提高更新速度的方法。
如果在更新每個單獨的文檔後發出提交,請等待並且只有在更新了索引中的一批文檔後才發出更新。從Solr Tutorial:
提交可以是一個昂貴的操作,所以最好做在批處理許多變化 到一個索引,然後在最後發送commit命令。 除了將所有索引段合併爲一個段, 還有一個優化命令,它與commit, 具有相同的功能,因此可以更快地搜索並刪除所有已刪除的文檔,從而刪除 。
查看使用軟提交或自動軟提交以減少更新延遲。有關更多詳細信息,請參閱Solr Wiki上的NearRealtimeSearch頁面。
我認爲更新過程很慢,僅僅是因爲很多http請求......好的建議! – javanna 2012-02-08 12:49:02
我會使用DIH修改的SQL查詢,它將接受來自URL的參數。 SQL查詢將如下所示:
SELECT user_name, user_online FROM users WHERE user_id=${dataimporter.request.user_id}
然後重新索引選擇的用戶要添加USER_ID參數,URL這樣的:
http://<host>:<port>/solr/dataimport?command=full-import&clean=false&user_id=5
文檔有關使用DIH和自定義參數:Solr - DataImportHandler
你可以開發一個最小的Solr插件,它將在solr服務器端爲您完成工作。
看一看: Discussion on Solr mailing list
目前仍然通過查詢沒有更新,但是從2012年的答案是過時的。現在在Solr 4.x中有https://wiki.apache.org/solr/Atomic_Updates,所以你可以在兩步中做你想做的事情,而不需要訪問原始文檔。
原子更新有限制。正如Erick在maillist中所說的那樣,它仍然是場景後面的整個文檔更新。使用原子更新時未列出的文檔的字段必須「存儲」,否則在原子更新後它們的原始值可能會丟失,因爲我認爲它從原始索引中檢索這些未列出的字段的值,並將它們與列出的字段合併以進行原子更新,然後在整個場景後面更新整個文檔。 (在撰寫評論時,最新的Solr是v6.1.0) – 2016-06-29 09:57:49
- 1. Solr更新索引
- 2. 從Lucene索引更新Solr索引
- 3. Solr - 索引自動更新
- 4. 如何更新solr索引?
- 5. 由nutch更新solr索引
- 6. 如何通過curl查詢刪除SOLR索引數據?
- 7. Elastisearch通過查詢更新
- 8. Solr索引過長
- 9. solr:索引過濾
- 10. 如何使用lucene.net查詢solr索引
- 11. Apache Solr索引和篩選器查詢
- 12. 索引和查詢Solr中的URL
- 13. 如何通過Django查詢Postgres索引
- 14. 的MySQL更新查詢使用索引
- 15. 未定義索引和更新查詢
- 16. 強制Solr從更新索引讀取
- 17. Solr部分文檔索引更新
- 18. Apache Solr XPathEntityProcessor DIH - 索引更新
- 19. Indexeddb - 通過索引鍵更新記錄
- 20. 如何複製每個過濾器查詢的Solr索引?
- 21. 索引時查詢Solr導致索引丟失文檔
- 22. 通過查詢索引名稱創建全文索引
- 23. 瞭解索引視圖更新QND查詢過程2008 R2
- 24. 通過SolrNet合併Solr查詢結果
- 25. 通過Solrj查詢Solr:基礎知識
- 26. elasticsearch查詢最新索引
- 27. 使用查詢更新solr文檔?
- 28. 更多類似於Solr查詢過濾
- 29. Solr重新索引行爲
- 30. 重新索引SOLR文檔
關於這個話題還有一個很好闡述的jira問題,以及爲什麼它沒有解決:https://issues.apache。org/jira/browse/SOLR-7490 – cheffe 2016-02-15 11:20:16