ElasticSearch Install

Die ElasticSearch Install Prozedur ist nicht zu schwierig. Dennoch erfordert sie an einige Punkten die absolute Aufmerksamkeit des Admins. Wir haben die ElasticSearch-Install-Prozedur hier für euch dokumentiert. Lest euch mal rein und wenn ihr Fragen habt, sprecht uns an.

Die ElasticSearch-Install-Prozedur

Die ElasticSearch benötigt auf dem Laufzeitsystem einige Komponenten, die wir zuallererst bereitstellen müssen. Hierzu zählen:

  • Java 1.7
  • MySQL und
  • Symfony

1. Schritt: Java 1.7 für den ElasticSearch-Install bereitstellen

Eventuell ist Java 1.7 ja bereits installiert. Deswegen prüft man am Besten zuerst einfach mal, ob es bereits vorhanden ist. Folgende Eingabe auf der Console ist dabei nötig:

$ java -version

Dann sollte folgende Meldung (oder ähnlich) ausgegeben werden:

java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.3) (7u71-2.5.3-0ubuntu0.12.04.1)
OpenJDK Client VM (build 24.65-b04, mixed mode, sharing)

Damit haben wir geprüft, ob Java 1.7 auf der Maschine vorhanden ist. Wenn Java 17 nicht vorhanden ist, muss man es JETZT zuerst installieren, bevor man mit dem ElasticSearch Install Prozedere fortfährt.

2. Schritt: ElasticSearch herunterladen und auspacken

Das Zip-File von der ElasticSearch laden wir jetzt erstmal herunter.

$ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.4.0.zip

Und wenn das Package heruntergeladen ist, entpacken wir es auch gleich mit der folgenden Anweisung.

$ unzip elasticsearch-1.4.0.zip

3. Schritt: ElasticSearch starten

Nachdem die ElasticSearch entpackt ist, können wir eigentlich gleichloslege. Die ElasticSearch kann jetzt direkt von der Command Line gestartet werden. Hierzu gibt man einfach den nachfolgenden Befehl ein.

$ ./elasticsearch-1.4.0/bin/elasticsearch

4. Schritt: ElasticSearch testen

Jetzt würde es noch Sinn machen, zu prüfen, ob die ElasticSearch schon läuft. Die Funktionsweise der ElasticSearch kann man ganz einfach einem kleinen Test unterziehen. Das ist mit der folgenden Anweisung möglich.

$ curl -XGET 'http://localhost:9200'

Der Befehl sollte dann ein Ergebnis der folgenden Art zurückgeben:

{
  "status" : 200,
  "name" : "Firefrost",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.4.0",
    "build_hash" : "bc94bd81298f81c656893ab1ddddd30a99356066",
    "build_timestamp" : "2014-11-05T14:26:12Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.2"
  },
  "tagline" : "You Know, for Search"
}

5. Schritt: MySQL-Anbindung beim ElasticSearch Install

Infografik: Software-Layer Datenbankzugriff bei ElasticSearch (#1)
Infografik: Software-Layer Datenbankzugriff bei ElasticSearch (#1)

Um die MySQL-Anbindung bereitzustellen nutzt man am Besten das JDBC-Plugin. Dieses steht über das packe aus dem ElasticSearch Install zur Verfügung. Mit der folgenden Anweisung kann man das JDBC-Plugin bemühen.

$ ./elasticsearch-1.4.0/bin/plugin --install jdbc --url http://xbib.org/repository/org/xbib/elasticsearch/plugin/elasticsearch-river-jdbc/1.4.0.3.Beta1/elasticsearch-river-jdbc-1.4.0.3.Beta1-plugin.zip

Bei der Benutzung des JDBC-Plugins sollte man beachten, dass die Version des Plugins zur Version der ElasticSearch passt. In einem weiteren Step fügen wir eine zusätzliche benötigte Komponente zu unserem System hinzu. Es ist der MySQL-Driver. Mit der folgenden Anweisung laden wir den MySQL-Driver herunter.

$ wget http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.34.zip

Die Zip-Datei sollte noch entpackt werden. Hierzu benutzt man die folgende Anweisung.

$ unzip mysql-connector-java-5.1.34.zip

Zur Installation des MySQL-Drivers sollte man die nachfolgende Anweisung benutzen.

$ cp mysql-connector-java-5.1.34/mysql-connector-java-5.1.34-bin.jar elasticsearch-1.4.0/plugins/jdbc/

Damit dürfte die Installation des MySQL-Plugins im Rahmen des ElasticSearch Install erfolgreich abgeschlossen sein.

6. Schritt: Plugins für Suchoptimierung bereitstellen

Zwei weitere Plugins werden für die Suchoptimierung benötigt. Diese kann man wie folgt aktivieren.

vagrant@precise32:~/elasticsearch-1.4.0$ bin/plugin -install com.yakaz.elasticsearch.plugins/elasticsearch-analysis-combo/1.5.1
vagrant@precise32:~/elasticsearch-1.4.0$ bin/plugin -install elasticsearch/elasticsearch-analysis-icu/2.4.1

Nun muss noch eine Datei ins Home-Verzeichnis verschoben werden.

~/elasticsearch-1.4.0/config/elasticsearch.yml

Eine zusätzliche Datei muss noch erstellt werden.

~/elasticsearch-1.4.0/config/elasticsearch.json

Die oben genannte Datei muss mit folgendem Inhalt erstellt werden.

{
    "index" : {
       "analysis" : {
       
                "char_filter" : {
                    "my_mapping" : {
                        "type" : "mapping",
                        "mappings" : ["ü=>ü", "ä=>ä", "ö=>ö", "Ä=>Ä", "Ü=Ü", "Ö=>ö", "ß=>ß"]
                     }
                 },
       
          "filter" : {
             "germansnow" : {
                "language" : "German2",
                "type" : "snowball"
             }
          },
          "analyzer" : {
          
                "custom_with_char_filter" : {
                    "tokenizer" : "standard",
                    "char_filter" : ["my_mapping"]
                },
          
             "german" : {
                "filter" : [
                   "germansnow",
                   "icu_folding"
                ],
                "type" : "custom",
                "tokenizer" : "icu_tokenizer"
             },
             "default" : {
                "sub_analyzers" : [
                   "custom_with_char_filter",
                   "standard",
                   "german"
                ],
                "type" : "combo"
             }
          }
       }
    }
}

7. Schritt: Datenbank indizieren lassen

Mit der nachfolgenden Anweisung kann man ein periodisches Indizieren der Datenbank veranlassen. In diesem Fall ist als Rhythmus “stündlich” eingetragen. In der Anweisung müssen natürlich die jeweils gültigen Adressen und Anmeldekennungen eingetragen werden.

curl -XPUT 'localhost:9200/_river/offersarticlesriver/_meta' -d '{
    "type" : "jdbc",
    "jdbc" : [{
        "url" : "jdbc:mysql://192.168.50.59:3306/sfspw2",
        "user" : "root",
        "password" : "#### hier das Passwort eintragen ####",
        "sql" : [
                "select concat(\"offer_\",offer.id) as _id, offer.id, offer.type, \"offer\" as table_name, offer.published as published, offer.title, offer.body_description, offer.usage_description, provider.title as provider_title from offer LEFT JOIN provider ON (offer.provider_id = provider.id) where offer.type in (\"voucher\",\"bargain\",\"freebie\") AND offer.published <= NOW() AND offer.publication_status = 1 AND offer.status = 1 AND provider.locale=\"de\" ORDER BY offer.published DESC;",
                "select concat(\"article_\",article.id) as _id, article.id, article.type, \"article\" as table_name, article.published as published, article.title, article.sub_title, article.teaser_description, article.body_description, adminuser.first_name, adminuser.last_name from article LEFT JOIN adminuser ON (article.created_user_id = adminuser.id) where article.type in (\"guide\") AND article.published <= NOW() AND article.publication_status = 1 ORDER BY article.published DESC;"
                ],
        "schedule" : "0 0 * * * ?",
        "strategy" : "simple",
        "index" : "offersarticles"
    }
    ]
}'

Damit sollte der ElasticSearch Install erfolgreich abgeschlossen sein.

Infografik: ElasticSearch Install: Application Layer. (#2)
Infografik: ElasticSearch Install: Application Layer. (#2)

Bildnachweis: © shutterstock – Titelbild Andreas G. Karelias, #1 + #2 schwarzer.de