2013-02-05 13 views
7

Ben şu anda XML dosyasında solr kullanıyorum. XPathentityProcessor ile DataimportHandler kullanarak xml dosyasının verilerini indekslerim.ithalat ihracatında JSON in solr

Şimdi json dosyasından veri almak istiyorum.

Herhangi bir örnek var mı?

Selamlar, Sagar

cevap

6

Ne gerek örnekten çekildi

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

gibi bir şeydir.

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

+0

, bu json dosyasını nasıl kullanırsınız? Bu json dosyasının yolunu nasıl vereceğim. ve URLDatasource ile kullanabilir miyiz? –

+0

Url'den istek yapmak istiyorum, curl kullanmak istemiyorum. Bunu başarmanın bir yolu var mı? –

+0

@SagarJoshi, json ile solr olarak veri içeren bir form göndermek gibi mi demek istiyorsun? –

3

DataImportHandler bir kaynak olarak JSON kullanmasına izin vermez. Tek yol, JSON'u yerel olarak işleyebilen Güncelleme İşleyicisini kullanmaktır. Ancak bu, the JSON structure Solr expects (karma dizisi veya komut/karma karma dizisi) içinde olmalıdır. Eğer kıvırın komutunu kullanmak istemiyorsanız

+0

Cevabınız için teşekkürler, sağladığınız URL'yi gördüm. Ama bunun yerine curl.I herhangi bir komut istemi kullanmak istemiyorum. Json dosyasından veriyi doğrudan sadece url'den almak mümkün mü? ya da böyle bir şey? –

+1

Ama Solr formundaki URL'niz ayrıştırılabilir (yukarıdaki bağlantı). Eğer değilse, sıkışmışsınız demektir. Eğer öyleyse, [stream.URL] 'yi kullanarak bakabilirsiniz (https://wiki.apache.org/solr/ContentStream) –

+1

Link şuraya taşındı: https://cwiki.apache.org/confluence/display/solr + Endeksi + Eylemciler # UploadingDatawithIndexHandlers-JSONFormattedIndexUpdates ile/Yükleme + Veri + –

3

tarayıcıda doğrudan komutu ateş ve istenilen sonucu elde edebilirsiniz:

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

/örnekte json dosyasını koyun/exampledocs folder.This varsayılan dizindir Solr içinde yol. Eğer java veya php vb. Kullanıyorsanız, kullandığınız çeşitli sınıflar ve yöntemler vardır ve daha sonra yukarıdaki gibi tüm komuttan bahsetmek istemezsiniz. İstediğin şey bu mu?

0

Verileri Solr'a göndermek için REST API'yı kullanabilirsiniz. Eğer sonrası isteği kullanarak solr için json dosya/veri gönderebilir

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

ve onunla istek header.Along içinde

:content_type => 'application/json' 

tanımlamak zorunda: Bu yolu kullanın.

fazla bilgi için? Ayrıca ekleyerek dokümanlarınızı güncelleyebilirsiniz http://geekdirt.com/blog/indexing-in-solr-using-json-and-rest-apis/

1

ziyaret edebilirsiniz şöyle bir bukle komutunun url içinde = true ifadesi taahhüt.

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

İthalat bölümünü veya tüm koleksiyonu bir json biçiminden almak isterseniz, bir alternatif var. https://github.com/freedev/solr-import-export-json

Bu SolrJ kullanarak Solr koleksiyon ihracat ithalat ve java uygulaması:

bir java aracı yazdı. Her belgenin bir json nesnesi olması ve içe aktardığınız dosyada her satırın bir json nesnesi olsa da, bir satır listesi olması gerekir.

{ "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" } 

Ben iç içe belgelerle denemedim ve json belgenin tuşları Solr alanların tam isimleri olmalıdır. Yukarıdaki URL'de