Embedded Elasticsearch Server unter Java nutzen

Den freien Suchserver Elasticsearch kann man, wie das Wort Suchserver es dezent andeutet, als Server betreiben. Allerdings ist es manchmal nicht gewünscht einen dedizierter Server zu betreiben. In einem solchen Fall kann man den Elasticsearch-Server in eine Java-Applikation einbetten. Der sicherlich häufigste Fall für eine solche Einbettung ist dabei die Nutzung zu Testzwecken (z.B. Unit-Tests zum Test der Suchergebnisse). Im ersten Schritt sollte in das Java-Projekt die entsprechende Abhängigkeit zum Projekt hinzugefügt werden. In diesem Beispiel wird dabei auf einem auf Maven basierenden Projekt ausgegangen – in diesem muss die pom.xml entsprechend erweitert werden:

<dependency>
    <groupId>org.elasticsearch</groupId>
    <artifactId>elasticsearch</artifactId>
    <version>2.3.4</version>
</dependency>

Damit wurde Elasticsearch dem Projekt hinzugefügt. Nun muss der eigentliche Server im Java-Projekt gestartet werden. Dafür werden nur wenige Zeilen Quellcode benötigt:

Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
    .put("http.enabled", "true")
    .put("path.data", "data")
    .put("path.home", "home");

Node node = nodeBuilder()
    .local(true)
    .settings(elasticsearchSettings.build())
    .node();

In diesem Beispiel werden im ersten Schritt die Einstellungen für Elasticsearch definiert. Dabei wird unter anderem der HTTP-Modus aktiviert. Wenn dieser deaktiviert ist, ist die Kommunikation per HTTP nicht mehr möglich. Stattdessen kann dann nur noch die Kommunikation über das Transport-Interface genutzt werden. Dieses Interface wird im Normalfall für die interne Kommunikationen zwischen einzelnen Elasticsearch-Clustern genutzt – allerdings ist eine Nutzung mit dem Elasticsearch-Java-Client ebenfalls möglich. Mit dem aktivierten Modus, ist die Entwicklung einfacher (z.B. für den Einsatz von Analyse-Tools) und die Konfiguration näher an der Praxis. Standardmäßig horcht der Elasticsearch-Server dabei auf dem Port 9200 – in diesem Beispiel wäre er über die URL:

http://localhost:9200

erreichbar. Nachdem die Einstellungen angelegt wurden, werden diese dem NodeBuilder übergeben, welcher schlussendlich den Elasticsearch-Server hochfährt. Nachdem dieser hochgefahren wurde, kann die Nutzung des selben beginnen.

Doppelte Dateien unter Mac OS X finden

Möchte man unter Mac OS X doppelte Dateien finden, hat man eine Reihe von Möglichkeiten. Bevorzugt man freie Software, so bietet sich die Software dupeGuru an. Neben der normalen Suche nach Dateiduplikaten, gibt es auch Versionen für Bilder und Musik. Zur Duplikatssuche gibt man der Applikation einfach einen Ordner an und schon werden die Duplikate gesucht und anschließend angezeigt, so das sie auf Wunsch gelöscht werden können.

Das Auswahlfenster von dupeGuru

Das Auswahlfenster von dupeGuru

Lizenziert ist dupeGuru unter der GPL3 – der Quelltext findet sich auf GitHub. Alternative Möglichkeiten wären unter anderem die (unfreie) App Gemini, welche im Appstore zu finden ist.

The app was not found in the store. :-(

Heise löscht alte Foren

In den nächsten Tagen beginnt heise damit alte Newsticker, Extra und user2User Foren zu löschen die ein bestimmtes Alter überschritten haben. Dazu ein Zitat aus dem heise Forum:

Hallo zusammen,

wir werden in den nächsten Tagen damit beginnen, Newsticker-Foren
sowie Foren aus dem Extra-Bereich der user2User-Foren zu löschen, die
älter als zwei Jahre sind. Bisher haben wir zwar so gut wie nie Foren
geschlossen, doch uns ist vor einiger Zeit aufgefallen, dass viele
Diskussionen, die vor Jahren in den Foren stattgefunden haben, heute
keine Bedeutung mehr haben. Um die Datenbank nicht zu sehr zu
belasten, werden wir uns rund eine Woche Zeit nehmen für das Löschen
der rund 10 Millionen Beiträge. Anschließend starten wir die
überarbeitete Forensuche, die leistungsfähiger ist als die jetzige.

Mit freundlichen Grüßen
Michael Wilde

Weitere Informationen gibt es unter:
http://www.heise.de/extras/foren/S-Wir-loeschen-in-den-naechsten-Tagen-Foren-die-aelter-als-zwei-Jahre-sind/forum-7262/msg-15773270/read/
http://www.heise.de/tp/blogs/5/118074