Solr API:Blob Store

2018-12-14 15:42 更新

Blob Store REST API提供REST方法來存儲、檢索或列出Lucene索引中的文件。

它可以用來上傳包含標準solr組件(如 RequestHandlers、SearchComponents 或其他為 solr 編寫的自定義代碼)的 jar 文件。架構(gòu)組件不還支持 Blob 存儲。

當使用blob存儲時,請注意,如果上傳了新名稱,則API不會刪除或覆蓋之前的對象。它總是向索引添加一個新的blob版本。刪除可以使用標準的REST刪除命令來執(zhí)行。

Blob存儲只能在SolrCloud模式下運行。獨立模式下的Solr不支持使用Blob存儲。

blob store API是作為 requestHandler 實現(xiàn)的。使用名為“.system”的特殊集合來存儲 blob。這個集合可以被預(yù)先創(chuàng)建,但是如果它不存在,它將被自動創(chuàng)建。

關(guān)于.system集合

在將blob上傳到blob存儲區(qū)之前,必須創(chuàng)建一個特殊的集合并且必須命名為.system。如果尚未存在,Solr將自動創(chuàng)建該集合,但是如果您選擇,則您也可以手動創(chuàng)建它。

BlobHandler 自動注冊在.system集合中。該集合的 solrconfig.xml、架構(gòu)和其他配置文件由系統(tǒng)自動提供,并不需要進行特別限定。

如果不使用-shards或-replicationFactor選項,則將使用默認值:numShards = 1 和 replicationFactor = 3(或群集中的最大節(jié)點數(shù))。

您可以使用集合 API 創(chuàng)建 .system集合,如下例所示:

curl http://localhost:8983/solr/admin/collections?action=CREATE&name=.system&replicationFactor=2

注意:該 bin/solr 腳本不能用于創(chuàng)建 .system 集合

將文件上傳到Blob Store

創(chuàng)建.system集合之后,可以將文件上傳到blob store,請求類似于以下內(nèi)容:

curl -X POST -H 'Content-Type: application/octet-stream' --data-binary @{filename} http://localhost:8983/solr/.system/blob/{blobname}

例如,要將名為“test1.jar”的文件上傳到名為“test”的blob,您可以發(fā)出POST請求,如:

curl -X POST -H 'Content-Type: application/octet-stream' --data-binary @test1.jar http://localhost:8983/solr/.system/blob/test

GET請求將返回blob列表和其他詳細信息:

curl http://localhost:8983/solr/.system/blob?omitHeader=true

輸出如下所示:

{
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"test/1",
        "md5":"20ff915fa3f5a5d66216081ae705c41b",
        "blobName":"test",
        "version":1,
        "timestamp":"2015-02-04T16:45:48.374Z",
        "size":13108}]
  }
}

有關(guān)各個blob的詳細信息可以通過類似于以下的請求來訪問:

curl http://localhost:8983/solr/.system/blob/{blobname}

例如,這個請求將只返回名為“test”的blob:

curl http://localhost:8983/solr/.system/blob/test?omitHeader=true

輸出如下所示:

{
  "response":{"numFound":1,"start":0,"docs":[
      {
        "id":"test/1",
        "md5":"20ff915fa3f5a5d66216081ae705c41b",
        "blobName":"test",
        "version":1,
        "timestamp":"2015-02-04T16:45:48.374Z",
        "size":13108}]
  }
}

文件流響應(yīng)編寫器可以返回一個特定版本的blob進行下載,如下所示:

curl http://localhost:8983/solr/.system/blob/{blobname}/{version}?wt=filestream > {outputfilename}

對于最新版本的blob,{version}可以省略,

curl http://localhost:8983/solr/.system/blob/{blobname}?wt=filestream > {outputfilename}

在處理程序或組件中使用Blob

要使用blob作為請求處理程序或搜索組件的類,可以在solrconfig.xml中照常創(chuàng)建請求處理程序。您將需要定義以下參數(shù):

class

完全合格的類名。例如,如果您創(chuàng)建了一個名為CRUDHandler的新的請求處理程序類,則可以輸入org.apache.solr.core.CRUDHandler。

runtimeLib

設(shè)置為true,要求該組件應(yīng)從加載運行時 jar 的加載器中加載。。

例如,要使用名為test的blob,您可以在solrconfig.xml中像這樣配置:

<requestHandler name="/myhandler" class="org.apache.solr.core.myHandler" runtimeLib="true" version="1">
</requestHandler>

如果自定義處理程序中有可用的參數(shù), 則可以使用與任何其他請求處理程序定義相同的方式來定義它們。
注意:Blob store 只能用于動態(tài)加載在 solrconfig. xml 中配置的組件。在 solrconfig. xml 中指定的組件不能從 blob store 加載。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號