ich einen bestimmten Wert aus einem mehrwertig Feld in einem großen Index entfernen möchten, wo ich abfragen, müssen zuerst die Dokumente diesen Wert enthalten, dh:Solr: entfernen Wert mit teilweise Aktualisierung durch Abfrage
- abrufen IDs der Dokumente, die den spezifischen Wert enthalten.
- teilweise diese Dokumente aktualisieren (mit
remove
).
Solr-Version ist 5.1. Ich könnte bei Bedarf aktualisieren, aber die Änderungsprotokolle zeigen keine Relevanz für dieses Problem an.
Ich habe die folgende Abfrage (in einigen Variationen) versucht, auf dem /select
Endpunkt durch die Solr Web-Interface (http://localhost:8983/solr/#/core/documents), versuchen, den Wert von allen Dokumenten zu entfernen:
{"id":"*", "field": {"remove":"value"} }
Die Serverantwort ist "Erfolg", aber kein Dokument wird aktualisiert.
Was ich tun könnte, ist Abfrage für field:value
, extrahieren Sie die Dokument-IDs und (programmatisch) generieren Update-Abfragen für diese IDs, ähnlich wie in this answer angezeigt wurde. Aber ich würde erwarten, dass es eine einfachere Lösung geben sollte.
Die Beispiele in der partial updates documentation und andere verwandte Webseiten sind hier nicht wirklich anwendbar, da sie davon ausgehen, dass die ID der aktualisierten Dokumente im Voraus bekannt sind. Die meisten anderen Diskussionen über ähnliche Probleme beziehen sich auf alte Solr-Versionen, bevor Teilupdates eingeführt wurden (in Solr 4).