Elasticsearch und Java-Anwendungen

Wer sucht, der findet

Florian Hopf
© iStockphoto.com/epic11

Elasticsearch bietet die gesamte Funktionalität zur Nutzung als Document Store oder Suchserver über HTTP und JSON und ist damit aus vielen Programmierumgebungen heraus nutzbar. Beim Zugriff aus einer Java-Anwendung hat man weitere Vorteile – und die Wahl zwischen unterschiedlichen Mechanismen und Clients. Dieser Artikel stellt den Zugriff auf Elasticsearch über den Standardclient, über den REST-API-Client Jest und über Spring Data Elasticsearch vor.

Elasticsearch ist ein verteilter Document Store, mit dem über HTTP und JSON kommuniziert werden kann. Zahlreiche Funktionalitäten für die Volltextsuche auf Basis der bewährten Java-Bibliothek Apache Lucene stehen zur Verfügung. Ein neues Dokument, das im Beispiel einer Vortragsbeschreibung entspricht, kann wie in Listing 1 angegeben über den HTTP-Client curl hinzugefügt werden.

curl -XPUT "http://localhost:9200/conference/talk/1" -d'
{
    "title" : "Anwendungsfälle für Elasticsearch",
    "speaker" : "Florian Hopf",
    "date" : "2014-07-17T15:35:00.000Z",
    "tags" : ["Java", "Lucene"],
    "conference" : {
        "name" : "Java Forum Stuttgart",
        "city" : "Stuttgart"
    } 
}'

Wir geben über den URL an, dass das Dokument im Index conference gespeichert werden soll und vom Typ talk ist. Der Index fasst logisch zusammengehörige Dokumente zusammen, der Typ beschreibt, welcher Entität ein Dokument entspricht.

Zur Konfiguration, wie auf einzelnen Feldern eines Dokuments gesucht werden kann, verwaltet Elasticsearch ein Mapping für jeden Typ. Dieses Mapping entspricht dem Schema der Daten und bestimmt, über welchen Analyzer der zugrunde liegende Text verarbeitet wird, also letztendlich, wie dieser durchsuchbar ist. Im Gegensatz zu vielen anderen Datenbanken kann bei der Arbeit mit Elasticsearch zu Beginn auf die explizite Angabe dieses Schemas verzichtet werden. Aus den Dokumenten, die in den Index geschrieben werden, wird automatisch die Struktur extrahiert, und die Speicherung erfolgt anhand sinnvoller Default-Werte. Meist ist es notwendig, diese Struktur später noch durch ein eigenes Mapping zu verfeinern. Es ermöglicht allerdings einen sehr einfachen Start mit Elasticsearch.

(Lesen Sie den kompletten Artikel im Java Magazin 12.14)

Geschrieben von
Florian Hopf
Florian Hopf
Florian Hopf
Kommentare

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu: