/
Pack Hosting Panel

Elasticsearch

Wat is Elasticsearch en hoe gebruik ik het bij Hipex


Elasticsearch is specifiek ontwikkelt voor vrij zoeken en layered navigation. Hierdoor is Elasticsearch uitermate geschikt voor e-commerce sites als vervanging van de vaak standaard MySQL zoek en filter implementaties.

Elasticsearch wordt bij Hipex gedraaid via Docker. We gaan er voor deze verdere handleiding vanuit dat je bekend bent met Docker en hoe je dit kunt gebruiken. Zie hiervoor ook onze docker documentatie.

Service configuratie

In de docker service configuratie geef je aan welke versie je van Elasticsearch gebruikt en op welke poort deze beschikbaar moet zijn. In dit voorbeeld is dat dus versie 7.8 op poort 19200.

version: "3.2"

services:
    elasticsearch:
        image: elasticsearch:7.8.0
        restart: "always"
        volumes:
        - data:/usr/share/elasticsearch/data
        environment:
            discovery.type: "single-node"
        ports:
        - "19200:9200"

volumes:
    data:

Vervolgens plaats je dit bestand in een subfolder van je home folder, in dit geval bijvoorbeeld ~/elasticsearch/docker-compose.yml

Daarna kun je de services starten met dit commando:

cd ~/elasticsearch/
hipex docker:compose:up --detach

Poort bind error

Als je bij het opstarten van je service deze foutmelding krijgt: Bind for 0.0.0.0:19200 failed: port is already allocated, dan is de gekozen poort 19200 al in gebruik. In dat geval moet er een andere poort gekozen worden.

Gebruik

De Elasticsearch instantie is vanaf nu bereikbaar op poort 19200, dit kun je testen met curl.

curl localhost:19200


{
  "name" : "512decbc664a",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "hZ1_YRATQdOOw1tIz4nn2Q",
  "version" : {
    "number" : "7.8.0",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "757314695644ea9a1dc2fecd26d1a43856725e65",
    "build_date" : "2020-06-14T19:35:50.234439Z",
    "build_snapshot" : false,
    "lucene_version" : "8.5.1",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Plugins

Als je plugins zoals analysis-icu of analysis-phonetic nodig hebt is het aan te raden om je eigen docker image te builden. Je docker file komt er dan zo uit te zien:

FROM elasticsearch:6.8.0

RUN elasticsearch-plugin install -b analysis-icu
RUN elasticsearch-plugin install -b analysis-phonetic

Als je eigen docker image bouwen geen optie is dan kun je ook het standaard startup commando overschrijven en de plugins installeren tijdens het opstarten. De compose file komt er voor deze twee plugins dan zo uit te zien:

version: "3.2"
services:
    elasticsearch:
        image: elasticsearch:6.5.0
        restart: "always"
        environment:
            discovery.type: "single-node"
        command: bash -c "elasticsearch-plugin list | grep analysis-icu || elasticsearch-plugin install -b analysis-icu && elasticsearch-plugin list | grep analysis-phonetic || elasticsearch-plugin install -b analysis-phonetic && docker-entrypoint.sh"
        ports:
        - "19201:9200"

volumes:
    data:

Het stuk voor het installeren van de analysis-icu plugin ziet er zo uit: elasticsearch-plugin list | grep analysis-icu || elasticsearch-plugin install -b analysis-icu. Het command eindigen we met de standaard entrypoint docker-entrypoint.sh.