2016-06-08 13 views
0

Ich habe einige Probleme bekommen SolrClient sofort Änderungen, die ich mache zu reflektieren. Wenn ich in den Index schreibe, muss ich zuerst den laufenden Solr-Prozess neu starten, und erst dann kann ich die Änderungen sehen, die ich schreibe. Hier ist der Code ich verwendeSolrClient nicht commit Änderungen bis Neustart von solr Prozess

import json 
from SolrClient import SolrClient 


def read_all(): 

    client = SolrClient('http://localhost:8983/solr') 

    res = client.query('test', { 
     'q' : '*:*' 
    }) 

    res = json.loads(res.get_json()) 
    docs = res['response']['docs'] 

    for doc in docs: 
     print (doc) 


def index_json(): 

    client = SolrClient('http://localhost:8983/solr') 

    docs = [ 
     {'id' : '8', 'field8' : 'value8'}, 
    ] 

    client.index_json('test', json.dumps(docs)) 

    client.commit('test') 

also so tun, ich habe Felder 1-7 bereits indiziert und dann laufe ich meine READ_ALL Funktion. Ich werde die Dokumente 1-7 ausgedruckt sehen. Dann laufe ich index_json, um Dokument 8 zu indexieren. Wenn ich sofort read_all laufen lasse, sehe ich nur 1-7 ausgedruckt. Ich muss solr stoppen und dann solr starten. Nur dann sehe ich die Dokumente 1-8 ausgedruckt.

las ich auf einer ähnlich klingende Post, die ich brauchte, um meine Änderungen zu übernehmen, weshalb ich ist

hinzugefügt
client.commit('test') 

am Boden, aber es scheint nicht zu funktionieren. Hilfe bitte?

+0

Kann die Commit-Anforderung im Solr-Protokoll angezeigt werden? Versuchen Sie außerdem, dem Commit-Aufruf "openSearcher = True" hinzuzufügen, damit Ihr Client warten kann, bis die festgeschriebenen Daten tatsächlich durchsucht werden können. – MatsLindh

Antwort

0

Die Commit-Funktion der Bibliothek die Parameter setzt sich wie folgt:

openSearcher=False 
softCommit=False 
waitSearcher=True 
commit=True 

Seit seiner einem harten begehen und opensearch falsch ist, werden Caches nicht für ungültig erklärt und daher können Sie keine neuen hinzugefügten Datensätze sehen. Sie können sich auf here und here beziehen.

So können Sie je nach Anwendungsfall den gewünschten Commit festlegen und entsprechend setzen. Ich hoffe das hilft.

+0

Danke für die Erklärung. Ich überprüfe nach der Arbeit und gebe Ihnen dann das Akzeptieren, wenn dies funktioniert. – Zack

Verwandte Themen