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
.
Magento 2 ElasticSearch configuratie
Na het actief zetten van de ElasticSearch instantie dient ook de hostname en poort in Magento aangeven te worden. Dit kan door de volgende confgiuratie actief te zetten in de env.php:
'system' => [
'default' => [
'catalog' => [
'search' => [
'engine' => 'elasticsearch7',
'elasticsearch7_server_port' => '19200'
]
]
]
]
Mocht het mogelijk zijn om in te loggen op de back-end kan deze ook gemakkelijk hier aangepast worden door middel van deze configuratie