2016-05-20 9 views
0

Neuling in Apache Nutch - Schreiben eines Clients, um es über REST zu verwenden. in allen Schritten (INJECT, FETCH ...) gelingen - im letzten Schritt - beim Versuch, zu solr zu indizieren - es nicht den Parameter übergeben. Der Antrag (ich es in irgendeiner Website formatiert)Apache nutch zum Index zu solr über REST

{ 
    "args": { 
    "batch": "1463743197862", 
    "crawlId": "sample-crawl-01", 
    "solr.server.url": "http:\/\/x.x.x.x:8081\/solr\/" 
    }, 
    "confId": "default", 
    "type": "INDEX", 
    "crawlId": "sample-crawl-01" 
} 

Die Nutch-Protokolle:

java.lang.Exception: java.lang.RuntimeException: Missing SOLR URL. Should be set via -D solr.server.url 
SOLRIndexWriter 
     solr.server.url : URL of the SOLR instance (mandatory) 
     solr.commit.size : buffer size when sending to SOLR (default 1000) 
     solr.mapping.file : name of the mapping file for fields (default solrindex-mapping.xml) 
     solr.auth : use authentication (default false) 
     solr.auth.username : username for authentication 
     solr.auth.password : password for authentication 
     at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462) 
     at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:522) 

War das umgesetzt? der param zum solr plugin?

Antwort

1

Sie benötigen eine Konfiguration mit dem /config/create/ Endpunkt erstellen/aktualisieren, mit einer POST-Anforderung und einer Nutzlast ähnlich wie:

{ 
    "configId":"solr-config", 
    "force":"true", 
    "params":{"solr.server.url":"http://127.0.0.1:8983/solr/"} 
} 

In diesem Fall habe ich eine neue Konfiguration bin Erstellung und Angabe des solr.server.url Parameter. Sie können überprüfen, ob dies mit einer GET-Anforderung an /config/solr-config (solr-config ist die zuvor angegebene configId) arbeitet, die Ausgabe sollte alle Standardparameter enthalten, siehe https://gist.github.com/jorgelbg/689b1d66d116fa55a1ee14d7193d71b4 für ein Beispiel/Standardausgabe. Wenn im zurückgegebenen JSON alles funktioniert hat, sollte die Option solr.server.url mit dem gewünschten Wert https://gist.github.com/jorgelbg/689b1d66d116fa55a1ee14d7193d71b4#file-nutch-solr-config-json-L464 angezeigt werden.

Danach drücken Sie einfach den /job/create Endpunkt einen neuen INDEX Job zu schaffen, sollte die Nutzlast so etwas wie:

{ 
    "type":"INDEX", 
    "confId":"solr-config", 
    "crawlId":"crawl01", 
    "args": {} 
} 

Die Idee ist, dass müssen Sie die configId passieren, dass Sie mit den entlang angegebenen solr.server.url erstellt mit dem crawlId und anderen Argumenten. Dies sollte etwas ähnliches zurück:

{ 
    "id": "crawl01-solr-config-INDEX-1252914231", 
    "type": "INDEX", 
    "confId": "solr-config", 
    "args": {}, 
    "result": null, 
    "state": "RUNNING", 
    "msg": "OK", 
    "crawlId": "crawl01" 
} 

Unterm Strich müssen Sie eine neue Konfiguration mit den solr.server.url anstatt es zu spezifizieren in der JSON Nutzlast durch die args Schlüssel gefasste erstellen.