2013-02-05 18 views
7

Attualmente sto usando il file XML in solr. indice i dati del file xml utilizzando DataimportHandler con XPathentityProcessor.importare dati da JSON in solr

Ora voglio importare i dati dal file json.

C'è qualche esempio?

saluti, Sagar

risposta

6

Quello che vi serve è qualcosa di simile

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

Tratto da l'esempio.

Fonte

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

+0

nell'url sopra, come usare quel file json? Voglio dire come fornire il percorso di quel file JSON. e possiamo usarlo da URLDatasource? –

+0

Voglio fare richiesta da url, non voglio usare arricciatura. c'è un modo per raggiungerlo? –

+0

@SagarJoshi intendi come inviare un modulo con dati come json in solr? –

3

DataImportHandler non consente di utilizzare JSON come fonte. L'unico modo è usare Update Handler che può gestire JSON in modo nativo. Ma quello deve essere in the JSON structure Solr expects (matrice di hash o hash di comando/hash).

+0

Grazie per la tua risposta, ho visto l'url che hai fornito. Ma nel fatto che usa curl.Non voglio usare alcun prompt dei comandi. Quindi è possibile ottenere dati dal file json direttamente dall'URL? o qualcosa del genere? –

+1

Ma il tuo URL nel formato che Solr può analizzare (link sopra). Altrimenti, sei bloccato. Se lo è, puoi guardare usando [stream.URL] (https://wiki.apache.org/solr/ContentStream) –

+1

Link si è spostato su: https://cwiki.apache.org/confluence/display/solr/caricamento dati + + con + Index + Handlers # UploadingDatawithIndexHandlers-JSONFormattedIndexUpdates –

3

se non volete usare il comando curl, si può sparare il comando direttamente dal browser e ottenere il risultato desiderato:

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

messo il file JSON in/es/exampledocs folder.This è directory predefinita percorso in solr. Se si utilizza java o php, ecc., Ci sono diverse classi e metodi che si usano e quindi non si richiede di menzionare l'intero comando come sopra. È quello che stavi chiedendo?

0

È possibile utilizzare api REST per inviare dati a Solr. Si prega di utilizzare questo percorso:

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

ed è necessario definire

:content_type => 'application/json' 

a richiesta header.Along con essa è possibile inviare dei file JSON/dati a Solr utilizzando richiesta POST.

Per maggiori informazioni si può visitare http://geekdirt.com/blog/indexing-in-solr-using-json-and-rest-apis/

1

È possibile anche aggiornare i documenti includendo il? Commettere = true dichiarazione entro l'URL di un comando ricciolo in questo modo.

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

Se si desidera importare una parte o l'intera raccolta da un formato JSON, beh, c'è un'alternativa.

ho scritto uno strumento java: https://github.com/freedev/solr-import-export-json

Questa è un'applicazione Java che le importazioni ed esporta una raccolta Solr utilizzando SolrJ. Ogni documento deve essere un oggetto json e nel file che si sta importando è necessario avere un elenco di righe mentre ogni riga è un oggetto 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" } 

Non ho provato con i documenti nidificati, e le chiavi del documento JSON dovrebbe essere esattamente i nomi dei campi Solr.