Was ist neu in Apache Solr 5.2
Apache Lucene und Solr 5.2.0 wurden soeben mit einer Vielzahl neuer Funktionen, Optimierungen und Fehlerkorrekturen veröffentlicht. Hier sind die wichtigsten…
Apache Lucene und Solr 5.2.0 wurden soeben mit einer Vielzahl neuer Funktionen, Optimierungen und Fehlerkorrekturen veröffentlicht. Hier sind die wichtigsten Highlights der Version:
Regelbasierte Zuweisung von Replikaten
Mit dieser Funktion können Benutzer die Platzierung neuer Replikate bei der Erstellung von Sammlungen, Replikaten und Shards genau steuern. Eine Regel ist eine Reihe von Bedingungen, bestehend aus Shard, Replikat und einem Tag, die erfüllt sein müssen, bevor ein Replikat erstellt werden kann. Dies kann verwendet werden, um die Erstellung von Replikaten einzuschränken:
- Behalten Sie weniger als 2 Replikate einer Sammlung auf einem beliebigen Knoten
- Behalten Sie für einen Shard weniger als 2 Replikate auf jedem Knoten
- (Nicht) Shards auf einem bestimmten Rack oder Host erstellen.
Weitere Einzelheiten zu dieser Funktion finden Sie in diesem Blogpost: https: //lucidworks.com/post/rule-based-replica-assignment-solrcloud/
API wiederherstellen
Bisher bot Solr eine Funktion zum Sichern eines bestehenden Index mit einem Aufruf wie:
http://localhost:8983/solr/techproducts/replication?command=backup&name=backup_name
Mit der neuen Wiederherstellungs-API können Sie ein vorhandenes Backup mit einem Befehl wie
http://localhost:8983/solr/techproducts/replication?command=restore&name=backup_name wiederherstellen.
Der Speicherort für die Indexsicherung ist standardmäßig das Datenverzeichnis, kann aber durch den Parameter location überschrieben werden.
JSON-Facetten-API
unique()-Facettenfunktion
Die Funktion der eindeutigen Facette wird jetzt für numerische und Datumsfelder unterstützt. Beispiel:
json.facet={ unique_products : "unique(product_type)" }
Der Parameter „Typ“: Flachere Anfrage
Es gibt jetzt eine Möglichkeit, eine flachere JSON Facet-Anfrage mit dem Parameter „type“ zu erstellen. Die folgende Anfrage aus 5.1:
top_authors : { terms : { field:author, limit:5 } }
ist gleichbedeutend mit dieser Anfrage in 5.2:
top_authors : { type:terms, field:author, limit:5 }
mincount Parameter und Bereichsfacetten
Der Parameter mincount wird jetzt von Bereichsfacetten unterstützt, um Bereiche herauszufiltern, die eine Mindestanzahl von Dokumenten nicht erfüllen. Beispiel:
prices:{ type:range, field:price, mincount:1, start:0, end:100, gap:10 }
Multi-Select-Facettierung
Ein neuer Parameter, excludeTags, lässt alle übereinstimmenden getaggten Filter für diese Facette außer Acht. Beispiel:
q=cars &fq={!tag=COLOR}color:black &fq={!tag=MODEL}model:xc90 &json.facet={ colors:{type:terms, field:color, excludeTags=COLOR}, model:{type:terms, field:model, excludeTags=MODEL} }
Das obige Beispiel zeigt eine Abfrage, bei der ein Benutzer „Farbe:Schwarz“ ausgewählt hat. Diese Abfrage würde das Folgende tun:
- Erhalten Sie eine Dokumentenliste mit dem angewendeten Filter.
- Facette Farben:
- Schließen Sie den Farbfilter aus, so dass Sie Facetten für alle Farben zurückerhalten, anstatt nur die Farbe ‚Schwarz‘ zu erhalten.
- Wenden Sie den Modellfilter an.
- Berechnen Sie auf ähnliche Weise Facetten für das Modell, d.h. schließen Sie den Modellfilter aus, wenden Sie aber den Farbfilter an.
hll-Facettenfunktion
Die json facet API verfügt über eine Option zur Verwendung der HyperLogLog-Implementierung für die Berechnung eindeutiger Werte. Beispiel:
json.facet={ unique_products : "hll(product_type)" }
Auswahl der Facettenimplementierung
Vor Solr 5.2 hatte die Intervallfacettierung eine andere Implementierung als die auf DocValues basierende Bereichsfacettierung, die manchmal schneller ist und nicht auf Filter und Filter-Cache angewiesen ist. Solr 5.2 bietet die Möglichkeit, zwischen den auf Filtern und DocValues basierenden Implementierungen zu wählen. Funktionell sind die Ergebnisse der beiden gleich, aber es kann einen Unterschied in der Leistung geben. Mit dem Parameter facet.range.method können Sie die zu verwendende Implementierung angeben. Einige Zahlen zur Leistung der beiden Methoden finden Sie hier: https://issues.apache.org/jira/browse/SOLR-7406?focusedCommentId=14497338&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14497338
Komponente Statistik
Die Solr-Statistikkomponente unterstützt jetzt die HyperLogLog-basierte Kardinalitätsschätzung. Das gleiche wird auch von der neuen Json-Facetten-API verwendet. Die Kardinalitätsoption verwendet probabilistische „HyperLogLog„(HLL)-Algorithmus, um die Kardinalität der Sets in einem festen Speicherbereich zu schätzen. Außerdem können Sie den Kardinalitätsparameter abstimmen, so dass Sie die Genauigkeit gegen die Menge des bei der Abfrage verwendeten Arbeitsspeichers abwägen können, wobei die Auswirkungen auf die Antwortzeit relativ gering sind.
Solr Sicherheit
SolrCloud ermöglicht das Hosten mehrerer Sammlungen innerhalb desselben Clusters, aber bis 5.1 gab es keinen Mechanismus zur Einschränkung des Zugriffs.
Das Authentifizierungs-Framework in 5.2 ermöglicht die Einbindung eines benutzerdefinierten Authentifizierungs-Plugins oder die Verwendung des Kerberos Plugin zu verwenden, das standardmäßig mitgeliefert wird. Dies ermöglicht die Authentifizierung von Anfragen an Solr.
Das Autorisierungs-Framework ermöglicht die Implementierung eines benutzerdefinierten Plugins zur Autorisierung des Zugriffs auf Ressourcen in einem SolrCloud-Cluster. Hier ist ein Link zum Solr-Referenzhandbuch für dasselbe: https://cwiki.apache.org/confluence/display/solr/Security
Solr Streaming-Ausdrücke
Streaming Expressions, eine einfache Abfragesprache für SolrCloud, die Suche und paralleles Rechnen miteinander verbindet. Dies baut auf der Solr Streaming API auf, die in 5.1 eingeführt wurde. Im Solr-Referenzhandbuch finden Sie weitere Informationen dazu: https://cwiki.apache.org/confluence/display/solr/Streaming+Expressions
Andere Merkmale
Als Teil des Bootstrapping-Prozesses und bevor der erste Solr-Knoten in Betrieb genommen wird, müssen einige Konfigurationen in Solr vorgenommen werden, z.B. um SSL zu aktivieren. Der CLUSTERPROP-Aufruf bietet eine API dafür, erfordert aber eine laufende Solr-Instanz. Ab Solr 5.2 kann eine clusterweite Eigenschaft mit dem Skript zkcli hinzugefügt/geändert/gelöscht werden, ohne dass eine Solr-Instanz ausgeführt werden muss.
An der räumlichen Front führt diese Version das neue räumliche RptWithGeometrySpatialFieldein, das auf CompositeSpatialStrategy basiert und RPT-Indizes für Geschwindigkeit mit serialisierter Geometrie für Genauigkeit verbindet. Sie enthält einen auf Lucene-Segmenten basierenden In-Memory-Cache für Formen.
Es gibt jetzt eine überarbeitete Admin UI die mit AngularJS erstellt wurde. Diese neue Benutzeroberfläche ist nicht die Standardoberfläche, sondern eine optionale Benutzeroberfläche, so dass Benutzer Probleme melden und Feedback geben können, damit diese Benutzeroberfläche zur Standardoberfläche wird. Die neue Benutzeroberfläche finden Sie unter: http://hostname:port/solr/index.html
Es handelt sich zwar um ein internes Detail, aber es ist sicherlich ein wichtiges. Solr wurde intern aktualisiert und verwendet nun Jetty 9. Dies ermöglicht uns, Async-Aufrufe und mehr zu verwenden.
Verbesserung der Indizierungsleistung
Diese Version bringt auch eine erhebliche Verbesserung der Indizierungsleistung mit sich und steigert diese im Vergleich zu Solr 4x um fast 100%. Darüber werden wir in Kürze in einem Blog berichten.
Neben den oben aufgeführten Funktionen und Verbesserungen enthält Solr 5.2.0 auch viele weitere neue Funktionen sowie zahlreiche Optimierungen und Fehlerbehebungen der entsprechenden Apache Lucene-Version. Weitere Informationen finden Sie im detaillierten Änderungsprotokoll sowohl für Lucene als auch für Solr, das Sie hier finden:
Lucene: http://lucene.apache.org/core/5_2_0/changes/Changes.html
Solr: http://lucene.apache.org/solr/5_2_0/changes/Changes.html
Abgebildetes Bild von David Precious