solr與.net系列課程(八)solr中重跑索引的注意事項

來源:互聯網
上載者:User

標籤:style   blog   http   io   color   os   使用   sp   for   

solr與.net系列課程(八)solr中重跑索引的注意事項

      我們如果在項目中使用solr,那肯定就是把資料庫中的資料跑進solr伺服器中,solr有兩種操作一種是建立索引,一種是增量索引,這裡我們來說一說建立索引的一下注意事項

終止跑索引                  http://192.168.0.9:8080/solr/collection1/dataimport?command=abort

開始索引                     http://192.168.0.9:8080/solr/collection1/dataimport?command=full-import

      當我們第一次執行索引時,因為solr中沒有資料,所以一切都會是按照我們想象的結果發生,但當我們需要重新執行索引的時候,在用上面的連結執行,就會出現一個問題,執行時是solr中的所有資料都消失了,然後在一點點的增加,這樣肯定是不行的,因為當資料量很大是,執行一次索引要花費很長時間,這時使用者登入你的系統就會發現你的資料不夠,會出問題的,只有執行全部完成時資料才會完整,導致這個原因是因為solr預設的所以機制是,先移除原有的所有資料(其實是轉移到另一個位置,當索引完成時在刪除,索引異常時會復原),然後在一條條的往裡面跑,但是我們可以選擇重跑索引時不移除資料,而是逐條覆蓋原有資料,這樣就不會影響使用者使用的,但是會增加索引的時間,

執行語句為  http://192.168.0.9:8080/solr/collection1/dataimport?command=full-import&clean=false

在圖形介面如下操作:

然後我們在來說一說多表索引的問題,當我們的資料是從多張表中擷取的,如下

<dataSource driver="com.microsoft.sqlserver.jdbc.SQLServerDriver" url="jdbc:sqlserver://192.168.0.9;DatabaseName=test" user="sa" password="123"/>    <document name="Info">        <entity name=" test1 "  transformer="ClobTransformer" pk="id"                 query="select id, name address,phone,class,addtime from tableA"                         deltaImportQuery=" select id, name address,phone,class,addtime from tableA"                     deltaQuery="SELECT id FROM tableA where adddate > ‘${dataimporter.last_index_time}‘">                              <field column="id"      name="id"      />                      <field column="name"      name="solrname"      />                      <field column="address "      name=“address "      />                      <field column="phone "      name="phone "      />                     <field column="class "      name="class "      />                      <field column="addtime "      name="addtime "      />          </entity><entity name=" test2 "  transformer="ClobTransformer" pk="id"                 query="select id, name address,phone,class,addtime from tableB"                         deltaImportQuery=" select id, name address,phone,class,addtime from tableB"                     deltaQuery="SELECT id FROM tableB where adddate > ‘${dataimporter.last_index_time}‘">                              <field column="id"      name="id"      />                      <field column="name"      name="solrname"      />                      <field column="address "      name=“address "      />                      <field column="phone "      name="phone "      />                     <field column="class "      name="class "      />                      <field column="addtime "      name="addtime "      />          </entity>    </document>    </dataConfig>

這個資料來源就是從tableA與tableB中擷取資料,當然了,兩張表的id不能重複,否則後進來的會覆蓋先進入的資料,那麼當我們只想重新索引其中一張表怎麼辦,

http://192.168.0.9:8080/solr/collection1/dataimport?command=full-import,這個語句會重跑所有的資料(兩個table都會重跑),其實solr是可以根據entity的name單個索引的,其他表的資料不變

方法如下:

http://192.168.0.9:8080/solr/collection1/dataimport?entity=test1&command=full-import,當然也可以加上clean=false,

圖形介面操作方式:

solr與.net系列課程(八)solr中重跑索引的注意事項

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.