Was ist neu in Solr 8
Eine Übersicht über die neuesten Funktionen von Apache Solr 8
Das Lucene PMC hat kürzlich die Veröffentlichung von Apache Solr Version 8.5. Wir haben inzwischen mehrere Versionen der 8.x-Reihe herausgebracht, und bei einer Kadenz von 8-10 Wochen wäre es verzeihlich, wenn Sie sich nicht über die neuesten Funktionen informiert hätten.
Da es in den letzten Versionen von Solr eine Reihe aufregender Änderungen gegeben hat, dachte ich, es wäre hilfreich, einige der Neuerungen in 8.3-8.5 zu besprechen.
Paket Manager
Solr-Benutzer haben sich schon lange ein richtiges Plugin-Ökosystem gewünscht. Für diejenigen, die ihre eigenen Query-Parser und andere Arten von Anpassungen entwickeln, war die Bereitstellung ihres Codes bestenfalls umständlich. Es war auch nie möglich, Ihren Code mit anderen zu teilen, die von ähnlichen Änderungen profitieren könnten.
Ab 8.4 verfügen wir in Solr über ein Paketverwaltungssystem, das die Hot-Deployment von Plugins auf allen Knoten eines Clusters, das sichere Signieren von Plugins aus vertrauenswürdigen Remote-Repositories und eine konsistente Paketierungsanleitung für Plugins ermöglicht. Eine wichtige Funktion der Hot-Deployment-Funktion ist die Möglichkeit, Plugins hinzuzufügen oder zu aktualisieren, ohne dass Sie .jars manuell verschieben und dann jeden Knoten des Clusters neu starten müssen.
Die Lucene/Solr-Gemeinschaft hofft, einige Funktionen, die lange Zeit als „Contribs“ gelebt haben (wie Solr Cell, DataImportHandler, Carrot usw.), aus Solr zu entfernen, damit sie zu Plugins werden können, die von Leuten gepflegt werden, die sich für sie begeistern und ihnen die Aufmerksamkeit geben können, die sie verdienen. Wenn Sie daran interessiert sind, eines dieser Plugins zu übernehmen, senden Sie bitte eine E-Mail an die Mailingliste für Entwickler dev@lucene.apache.org (bitte unbedingt abonnieren die Liste zu abonnieren, um Antworten zu sehen!).
Caches
Mit Solr 8.3 wurde eine brandneue Cache-Implementierung, CaffeineCache, eingeführt, von der wir erwarten, dass sie den meisten Benutzern einen geringeren Speicherbedarf, eine höhere Trefferquote und eine bessere Multithreading-Leistung bietet.
CaffeineCache basiert auf dem Koffein Caching-Bibliothek, die standardmäßig eine „Window Tiny Least Frequently Used“ (W-TinyLFU) Räumungsrichtlinie verwendet. Dies ermöglicht eine Verdrängung auf der Grundlage von Häufigkeit und Aktualität der Nutzung.
Diese Implementierung wird in Solr 9 zum Standard werden und alle anderen bestehenden Cache-Implementierungen werden zu diesem Zeitpunkt entfernt werden. Das Caching wirkt sich direkt auf die Leistung Ihrer Solr-Installation aus. Daher ist es am besten, für die Zukunft zu planen, indem Sie es in einer Entwicklungs- oder QA-Umgebung ausprobieren.
Sicherheit
Jede Diskussion über die jüngsten Änderungen muss die vielen Änderungen erwähnen, die in Solr 8.4 und 8.5 vorgenommen wurden, um die Standard-Sicherheitsposition von Solr zu verbessern. Unser Ziel war es, Solr von Anfang an sicherer zu machen.
Mein Kollege Erik Hatcher hat die Änderungen in 8.4 in seinem ausgezeichneten Beitrag behandelt, Standard-Sicherheit in Solr 8.4.
In 8.5 wurden einige weitere Funktionen hinzugefügt, nämlich die Möglichkeit, Solr mit einem aktivierten Java Security Manager auszuführen und IP-Adressen oder Bereiche auf eine Whitelist oder Blacklist zu setzen, die den Zugriff auf eine Solr-Schnittstelle (UI oder API) verhindern.
Indizierung von Protokolldateien
Die Protokolle von Solr enthalten eine Fülle von Informationen, aber in einem Produktionssystem können sie schwer zu lesen sein. Es ist so viel los, dass es schwierig ist, die Signale und das Rauschen zu trennen.
Seit Version 8.5 bietet Solr eine einfache Möglichkeit, die eigenen Protokolldateien in eine Solr-Sammlung zu indizieren, und zwar mit einem neuen Wrapper-Skript in der Datei bin/ Verzeichnis namens postlogs. Dieses Skript analysiert die Protokolldateien und indiziert sie in einer Sammlung Ihrer Wahl.
Sobald sie indiziert sind, können Sie sie auf Fehler oder Muster abfragen. Die Visualisierung der Systemaktivität mit etwas wie Apache Zeppelin kann bei der Diagnose eines Problems unglaublich hilfreich sein – wie viele Übertragungen werden wirklich durchgeführt? Wie langsam sind die Abfragen, über die sich die Benutzer beschweren? Sind das Ausreißer oder Anzeichen für ein anhaltendes Problem?
Es besteht natürlich die Möglichkeit, dass eine Endlosschleife entsteht, wenn Sie die Protokolle von Solr ständig selbst indizieren. Dieses Tool ist für die Fehlersuche und nicht für die Überwachung gedacht.
Neuer Ansatz für das Löschen per Abfrage
Löschvorgänge durch Abfragen können sehr teuer sein, insbesondere bei verteilten Sammlungen. In der Regel wird empfohlen, sie in einem ausgelasteten Produktionssystem zu vermeiden. Der Grund dafür ist, dass sie alle anderen Dokumentaktualisierungen blockieren, während die Abfrage ausgeführt und die Ergebnisse verarbeitet werden. Dies geschieht, um sicherzustellen, dass Aktualisierungen außerhalb der Reihenfolge und optimistische Gleichzeitigkeitsbedingungen ordnungsgemäß verarbeitet werden. Ein Nebeneffekt ist jedoch, dass sich in manchen Fällen andere Aktualisierungen aufstauen und schließlich dazu führen können, dass die Replikate wiederhergestellt werden müssen.
Es gibt Fälle, in denen Sie sich nicht um die Beibehaltung der Dokumentenreihenfolge und Versionskonsistenz kümmern, sondern einfach nur die Dokumente löschen möchten. Wenn Sie beispielsweise den Index von allen Dokumenten bereinigen möchten, die älter als 60 Tage sind, wissen Sie vielleicht, dass keine eingehenden Dokumente einen Zeitstempel haben, der später als heute ist. Es besteht also keine Notwendigkeit, den gesamten Indizierungsstrom zu blockieren und möglicherweise schwerwiegende nachgelagerte Konsequenzen zu verursachen.
Um eine Alternative zu bieten, wurde ein neuer Stream-Dekorator löschen() hinzugefügt, der ähnlich funktioniert wie die schon lange existierende aktualisieren() Dekorator, indem Sie einen Streaming-Ausdruck verpacken. Dieser Dekorator ermöglicht ein schnelleres Löschen per Abfrage, das nicht blockiert ist – jedes vom inneren Stream ausgegebene Tupel enthält eine Dokument-ID, die schnell aus dem Index gelöscht werden kann. Ein zusätzlicher Vorteil ist, dass die gesamte Syntax des Streaming-Ausdrucks zur Identifizierung der zu löschenden Dokumente zur Verfügung steht.
Wichtige Hinweise für Upgrades
Es gibt zwei wichtige Änderungen, die Sie beachten sollten, wenn Sie ein Upgrade auf 8.4 oder 8.5 von einer Version vor 8.4 durchführen.
Änderung eines nicht standardmäßigen Codecs (8.4)
Erstens, wenn Sie die Option postingsFormat oder docValuesFormat in einer Feld- oder Feldtypdefinition auf einen nicht standardmäßigen Codec gesetzt haben (wenn Sie z.B. den Tagger Handler verwenden, haben Sie dies getan), müssen Sie eine kleine Operation durchführen, um Solr nach dem Upgrade verwenden zu können.
SolrCloud Overseer Warteschlangenformat ändern (8.5)
Zweitens: Wenn Sie SolrCloud verwenden, sollten Sie während des Upgrades auf 8.5 Vorsicht walten lassen, da sich das Format für Elemente in den Overseer-Warteschlangen und Maps geändert hat. Es gibt keine Konfigurationsänderungen und Sie sollten auch sonst keinen Unterschied bemerken, aber Sie sollten die Vorschläge in den Solr Upgrade Notes sorgfältig befolgen, um ein erfolgreiches Upgrade durchzuführen.
Beseitigen Sie die Reibungsverluste bei Upgrades mit Lucidworks Managed Search
Lucidworks bietet Apache Solr als Managed Service für diejenigen an, die sich den Aufwand für Upgrades und die Verwaltung der Infrastruktur ersparen möchten, aber dennoch alle neuesten und besten Funktionen von Solr nutzen wollen. Lucidworks Managed Search ist jetzt als Vorschau verfügbar. Erfahren Sie mehr in dem Artikel meines Kollegen Marcus Eagan jüngster Blogbeitrag.
Ressourcen
- Solr Upgrade-Hinweise: https://lucene.apache.org/solr/guide/solr-upgrade-notes.html
- Versionshinweise: https://cwiki.apache.org/confluence/display/SOLR/ReleaseNote85
- Vollständige Liste der Änderungen: https://lucene.apache.org/solr/8_5_0/changes/Changes.html (Bitte beachten Sie, dass dies eine detaillierte Liste aller Änderungen ist. Klicken Sie auf den Link für „Ältere Versionen“, um die Änderungen von 8.3 und 8.4 zu sehen).