2013-02-05 44 views
7

當前我在solr中使用XML文件。 我使用DataimportHandler和XPathentityProcessor索引xml文件的數據。從JSON中導入數據solr

現在我想從json文件導入數據。

有沒有例子?

問候, 薩加爾

回答

6

你需要的是像

curl 'http://localhost:8983/solr/update/json?commit=true' --data-binary @books.json -H 'Content-type:application/json' 

從例如服用。

來源:https://wiki.apache.org/solr/UpdateJSON

+0

在上面的url中,如何使用那個json文件?我的意思是如何提供該json文件的路徑。我們可以通過URLDatasource使用它嗎? –

+0

我想要從URL做請求,不想使用捲曲。 有沒有什麼辦法可以實現呢? –

+0

@SagarJoshi你的意思是像提交一個數據表格作爲json來solr? –

3

DataImportHandler不允許你使用JSON作爲源。唯一的方法是使用可以本機處理JSON的Update Handler。但那必須在the JSON structure Solr expects(散列或散列的命令/散列數組)中。

+0

感謝您的回覆,我已經看到您提供的網址。 但它使用curl.I不想使用任何命令提示符。 那麼有可能從url直接從json文件中獲取數據?或者類似的東西? –

+1

但是你的URL是Solr可以解析的形式(上面的鏈接)。如果沒有,你就卡住了。如果是這樣,你可以看看使用[stream.URL](https://wiki.apache.org/solr/ContentStream) –

+1

鏈接已移到:https://cwiki.apache.org/confluence/display/solr /上傳+數據+與+指數+處理程序#UploadingDatawithIndexHandlers,JSONFormattedIndexUpdates –

3

,如果你不想使用curl命令,你可以直接開槍瀏覽器的命令,並得到想要的結果:

http://`localhost`:8983/solr/update/json?commit=true --data-binary @books.json -H 'Content-type:application/json' 

放入/例如JSON文件/ exampledocs folder.This是默認目錄solr中的路徑。 如果您使用的是java或php等,那麼您可以使用幾個類和方法,然後您不需要提及上面的整個命令。那是您要求的嗎?

0

您可以使用REST API將數據發送到Solr。請使用此路徑:

localhost:8983/solr/simple2/update?commit=true 
//(simple2 is the core name and localhost:8983 is server path.) 

,你必須在它要求header.Along定義

:content_type => 'application/json' 

你可以發送JSON文件/數據使用POST請求到Solr。

欲瞭解更多信息,您可以訪問http://geekdirt.com/blog/indexing-in-solr-using-json-and-rest-apis/

1

您還可以通過包括更新您的文檔?像這樣一個curl命令的URL中提交=真實的陳述。

curl -X POST -H "Content-Type: application/json" -u "{usernamne}":"{password}" "https://your_host/solr/your_collection/update/json?commit=true" --data-binary @/path/to/your/data/your_data.json 
0

如果您想從json格式導入部分或整個集合,那麼還有其他選擇。

我寫了一個Java工具:https://github.com/freedev/solr-import-export-json

這是進口和使用SolrJ出口Solr的一個集合的Java應用程序。每個文檔都必須是一個json對象,並且在您要導入的文件中,您必須有一個行列表,而每行是一個json對象。

{ "id": 1, "date": "20160101T00:00:00", "text": "some text" } 
{ "id": 2, "date": "20160102T00:00:00", "text": "some text" } 
{ "id": 3, "date": "20160103T00:00:00", "text": "some text" } 

我還沒有嘗試過使用嵌套文檔,並且json文檔的鍵應該完全是Solr字段的名稱。