Kolumne: Search Bites

Multidimensionale numerische Felder und Jigsaw-Kompatibilität: Apache Lucene und Solr 6.0 sind da

Uwe Schindler

(c) Shutterstock/Dashikka

Das Apache Lucene Team hat am Freitagabend Apache Lucene und Apache Solr in der Hauptversion 6 veröffentlicht. Lucene-Entwickler und JAX Speaker Uwe Schindler stellt im Rahmen der Search-Bites-Kolumne alle spennenden Neuerungen vor.

Apache Lucene 6.0

Die Änderungen im Bereich Apache Lucene, der unter Apache Solr und Elasticsearch liegenden Volltextsuch-Bibliothek, sind vor allem rund um einen komplett neuen Feldtyp zu finden: Ab dieser Version ist es möglich, mehrdimensionale, numerische Felder zu indexieren und schnell abzufragen. Bisher war dies nur in einer Dimension und bis maximal 64 Bits (Long- oder Double-Werte) möglich. Nun kann man sogenannte Points mit bis zu 8 Dimensionen und 128 Bits (16 Bytes) pro Wert indexieren.

Dies eröffnet zahlreiche Möglichkeiten, neue Datentypen im Index abzulegen und schnell abzufragen: Durch die 128 Bits werden Nutzer von auf Lucene basierenden Netzwerkmanagement- und Logging-Environments (zum Beispiel der ELK-Stack um Elasticsearch) nun auch in der Lage sein, IPv6-Adressen im Index zu speichern und bei Filterung und für Aggregationen zu benutzen. Aber auch Geo-Suchmaschinen profitieren daraus: Längen- und Breitengrade können als Pärchen im Index abgelegt werden, wodurch Workarounds wie Geohashes überflüssig werden.

Passend zu den neuen Point-Typen gibt es neue Queries wie “Ranges” oder besser gesagt “Boxen” in mehreren Dimensionen. Das API hat sich dabei grundlegend geändert. Unter der Haube verwenden Points sogenannte BKD-Trees (Block-k-d-Bäume). In einer Dimension ist das vergleichbar mit den herkömmlichen NumericFields, allerdings ist das Encoding adaptiv gestaltet, wodurch einiges an Indexspeicherplatz eingespart und zudem die Queryperformanz erhöht wird.

Benutzer, die bisher NumericRangeQuery mit NumericField benutzt haben, können nun auf Points (LongPoint, DoublePoint, IntPoint, FloatPoint, InetAddressPoint) umstellen. Dazu muss aber neu indexiert werden, da das Index-Encoding der alten NumericFields und der neuen PointFields komplett inkompatibel zueinander ist und auch nicht untereinander gewandelt werden kann. Benutzer, die nicht neu indexieren können, sind bis zur Version 7 von Lucene aber alternativ in der Lage, LegacyNumericRangeQuery und LegacyNumericField weiter zu benutzen, was aber als “deprecated” markiert ist.

Zusätzlich benötigen Apache Lucene (und auch Solr) nun mindestens Java 8 zur Laufzeit. Der Core von Lucene ist zudem mit dem Compact-1-Profil des JDK lauffähig, was es auch auf Embedded Devices, welche nur eine stark abgespeckte Runtime bereitstellen, lauffähig macht. Außerdem ist Lucene 6 vollständig zum Java-9-Modulsystem Jigsaw kompatibel und benötigt nur wenige, dokumentierte Rechte in Umgebungen mit Security-Manager.

Apache Solr 6.0

Apache Solr baut wie immer auf den Funktionen von Apache Lucene auf, bietet aber selbst auch einige Neuigkeiten: Neben der herkömmlichen Abfragesprache ist nun auch ein SQL-kompatibler Query-Parser integriert, welcher es erlaubt, basierend auf dem Solr-Cloud Streaming API, viele SQL-ähnliche Konstrukte wie SELECT, GROUP BY, HAVING und ORDER BY an eine SolrCloud-Umgebung zu schicken. Die Abfragen werden parallelisiert in der Cloud abgearbeitet und an den Clienten ausgeliefert. Das lässt sich unter anderem auch mit einem in den SolrJ-Client integrierten JDBC-Treiber erreichen, welcher sich auch mit vielen JDBC Tools wie DBVisualizer einsetzen lässt.

Leider sind die mit Lucene 6 eingeführten Points noch nicht mit Solr einsetzbar. Dies wird vermutlich in Version 6.1 nachgeholt. Die Community ist sich hier noch nicht einig, wie mit dem Zwang zur Neuindexierung aller Daten umgegangen werden soll.

Die Liste der Änderungen von Apache Lucene und Apache Solr sind auf der Projekt-Webseite zu finden.

JAX 2016 LogoTreffen Sie Uwe Schindler auf der JAX 2016:

Überblick zu Apache Lucene und den darauf basierenden Suchservern Apache Solr und Elasticsearch

Dieser Vortrag wird eine kurze Einführung in das Gebiet der Volltextsuche und der Bibliothek Apache Lucene geben und dann die neuen Features und Verbesserungen präsentieren, die seit Version 5 hinzugekommen sind. Dabei wird das besondere Augenmerk auf die Suchserver Apache Solr und Elasticsearch gelegt, denn diese werden von den meisten Usern eingesetzt. Der Vortrag wird ebenfalls einen kurzen Featurevergleich zwischen den beiden Servern präsentieren, sodass neue Nutzer besser entscheiden können, welches der beiden Produkte besser für das Projekt geeignet ist.

Donnerstag, April 21, 2016 – 9:00 bis 10:00

Aufmacherbild: Danger Shark silhouettes von Shutterstock / Urheberrecht: Dashikka

Verwandte Themen:

Geschrieben von
Uwe Schindler
Uwe Schindler
Uwe Schindler ist Mitglied des Project Management Committee im Apache-Lucene-Projekt. Er ist mit seiner Consulting-Firma SD DataSolutions GmbH in Bremen ansässig und kümmert sich am Zentrum für Marine Umweltwissenschaften (MARUM) um die Suche nach geowissenschaftlichen Daten in der Umweltdatenbank PANGAEA.Blog: http://blog.thetaphi.deTwitter: @ThetaPh1
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: