2013-02-05 15 views
7

Obecnie używam pliku XML w Solr. I index danych pliku XML za pomocą DataimportHandler z XPathentityProcessor.import danych z JSON w Solr

Teraz chcę zaimportować dane z pliku json.

Czy istnieje przykład?

Pozdrowienia, Sagar

Odpowiedz

6

Co potrzebne jest coś

zaczerpnięte z przykładu
curl 'http://localhost:8983/solr/update/json?commit=true' --data-binary @books.json -H 'Content-type:application/json' 

.

Źródło: https://wiki.apache.org/solr/UpdateJSON

+0

w powyższym adresie URL, jak korzystać z tego pliku json? Mam na myśli, jak zapewnić ścieżkę tego pliku json. i czy możemy go użyć przez URLDatasource? –

+0

Chcę zrobić żądanie z adresu URL, nie chcę używać curl. Czy jest jakiś sposób, aby to osiągnąć? –

+0

@SagarJoshi masz na myśli jak przesłać formularz z danymi jako json do solr? –

3

DataImportHandler nie pozwalają na użycie JSON jako źródło. Jedynym sposobem jest użycie Update Handler, który może obsługiwać JSON natywnie. Ale musi to być the JSON structure Solr expects (tablica skrótów lub mieszania poleceń/skrótów).

+0

Dziękuję za odpowiedź, widzę ten adres URL, który podałeś. Ale w tym przy użyciu curl.I nie chcesz używać żadnego wiersza polecenia. Czy możliwe jest uzyskanie danych z pliku json bezpośrednio z adresu URL? czy coś takiego w tym stylu? –

+1

Ale jest twój adres URL w postaci Solr może parsować (link powyżej). Jeśli nie, utkniesz. Jeśli tak, możesz skorzystać z [stream.URL] (https://wiki.apache.org/solr/ContentStream) –

+1

Link został przeniesiony do: https://cwiki.apache.org/confluence/display/solr/Uploading + Data + with + Index + Handlers # UploadingDatawithIndexHandlers-JSONFormattedIndexUpdates –

3

jeśli nie chcesz użyć komendy curl, można odpalić polecenie bezpośrednio w przeglądarce i uzyskać pożądany rezultat:

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

umieścić plik json w/przykład/exampledocs folder.This jest domyślny katalog ścieżka w solr. Jeśli używasz java lub php itp., Istnieje kilka klas i metod, których używasz, a następnie nie będziesz musiał wymieniać całego polecenia, jak powyżej. Czy to, o co prosiłeś?

0

Możesz używać REST api do wysyłania danych do Solr. Proszę używać tej ścieżki:

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

i trzeba zdefiniować

:content_type => 'application/json' 

na żądanie header.Along z nim można wysłać plik/json danych SOLR użyciu żądania POST.

Więcej informacji można znaleźć http://geekdirt.com/blog/indexing-in-solr-using-json-and-rest-apis/

1

Można również aktualizować swoje dokumenty przez w tym? Popełnić = true oświadczenie w url zwinięcie poleceniem tak.

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

Jeśli chcesz importować część lub całą kolekcję z formatu json, cóż, jest alternatywa.

napisałem narzędzie Java: https://github.com/freedev/solr-import-export-json

Jest to aplikacja Java, który importuje i eksportuje zbiór Solr użyciu SolrJ. Każdy dokument musi być obiektem json, a importowany plik musi zawierać listę linii, podczas gdy każda linia jest obiektem 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" } 

Nie próbowałem z zagnieżdżonymi dokumentami, a klucze dokumentu json powinny być dokładnie nazwami pól Solr.