Récemment, la société a développé un système de gestion de fichiers et a besoin de réaliser la fonction de recherche en texte intégral, elle mène donc des recherches sur Elasticsearch, kibana et ses plug-ins associés analysis-ik, elasticsearch-head et ingest-attachment. présente en détail le déploiement des services ci-dessus dans le conteneur Docker.
Tout d'abord : Il est très, très important de confirmer la version d'installation, sinon ce sera un gouffre !
Le projet adopte le framework Ruoyi. À partir de maintenant, la dernière version du framework Ruoyi fait référence à Spring Boot Dependencies 2.5.14.
Connectez-vous à l'entrepôt maven https://mvnrepository.com/ pour afficher les dépendances
Recherchez elasticsearch et trouvez que la version référencée dans le framework de démarrage de printemps est 7.12.1, donc les étapes d'installation suivantes et le développement ultérieur sont basés sur la version 7.12.1.
1. Installez elasticsearch
1. Tirez l'image
docker pull elasticsearch:7.12.1
2. Créer et démarrer le conteneur
docker run --name=es -p 9200:9200 -p 9300:9300 \
-e "discovery.type=single-node" \
-v $PWD/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v $PWD/data:/usr/share/elasticsearch/data \
-v $PWD/logs:/usr/share/elasticsearch/logs \
-v $PWD/plugins:/usr/share/elasticsearch/plugins \
-d elasticsearch:7.12.1
--name : nommage du conteneur
-p : port de la carte
-e : la variable d'environnement, "discovery.type=single-node" doit être spécifiée pour le déploiement sur un seul nœud, sinon une erreur sera signalée et le contenu de l'erreur est le suivant.
les paramètres de découverte par défaut ne conviennent pas à une utilisation en production ; au moins un des [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] doit être configuré
-v : répertoire de montage, $PWD est le répertoire courant
-d : le conteneur s'exécute en arrière-plan
3. Rapport d'erreur, aucune autorisation
Vérifiez le journal, comme suit :
docker logs 容器ID
Donnez des autorisations au répertoire et redémarrez.
chmod -R 777 $PWD
4. Service d'accès, échec
curl localhost:9200 renvoie le message Réponse vide du serveur
Modifiez la valeur de xpack.security.enabled dans le fichier /usr/share/elasticsearch/config/elasticsearch.yml à l'intérieur du conteneur sur false.
5. Accédez au service et l'installation est réussie.
2. Installer Kibana
1. Tirez l'image
docker pull kibana:7.12.1
2. Créer et démarrer le conteneur
docker run -d -p 5601:5601 --name kibana --link elasticsearch:elasticsearch docker.io/kibana:7.12.1
--link : Spécifie qu'elasticsearch est connecté au conteneur kibana, sinon il signalera une erreur le serveur n'est pas encore prêt
3. Accéder au service et tester
Visitez http://server IP:5601/app/dev_tools#/console
GET /_analyze
{
"analyzer": "ik_max_word",
"text": "冰糖码奇朵"
}
3. Installez elasticsearch-analysis-ik
Étant donné que le téléchargement de l'installation en ligne est très lent et que des erreurs sont signalées à plusieurs reprises, l'installation hors ligne est adoptée.
1. Téléchargez le package d'installation
https://github.com/medcl/elasticsearch-analysis-ik/releases
2. Télécharger sur le serveur
Le répertoire que j'ai téléchargé est usr/local/es/elasticsearch-analysis-ik-7.12.1.zip
3. Copiez à l'intérieur du conteneur
docker cp usr/local/es/elasticsearch-analysis-ik-7.12.1.zip 容器ID:/usr/share/elasticsearch
4. Entrez dans le conteneur
docker exec -it 容器ID /bin/bash
5. Installez le plugin
elasticsearch-plugin install file:/usr/share/elasticsearch/elasticsearch-analysis-ik-7.12.1.zip
Comme suit, l'installation est terminée :
6. Sortez du conteneur
exit
7. Redémarrez elasticsearch
docker restart 容器ID
4. Installez elasticsearch-head
1. Tirez l'image
docker pull mobz/elasticsearch-head:5-alpine
2. Créer et démarrer le conteneur
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5-alpine
3. Résolvez l'échec de connexion
Modifiez le fichier de configuration elasticsearch.yml, ajoutez les deux lignes suivantes :
http.cors.enabled: true
http.cors.allow-origin: "*"
4. Résolvez l'erreur d'accès 406
et modifiez le fichier usr/src/app/_site/vendor.js à l'intérieur du conteneur
Ligne 6886 /contentType : "application/x-www-form-urlencoded est remplacé par :
contentType: "application/json;charset=UTF-8"
La ligne 7573 var inspectData = s.contentType ==`= "application/x-www-form-urlencoded" &&` est remplacée par :
var inspectData = s.contentType === "application/json;charset=UTF-8" &&
5. Installer l'attachement d'ingestion
1. Téléchargez le package d'installation
https://artifacts.elastic.co/downloads/elasticsearch-plugins/ingest-attachment/ingest-attachment-7.12.1.zip
2. Télécharger sur le serveur
Le répertoire que j'ai téléchargé est usr/local/es/ingest-attachment-7.12.1.zip
3. Copiez à l'intérieur du conteneur
docker cp usr/local/es/ingest-attachment-7.12.1.zip 容器ID:/usr/share/elasticsearch
4. Entrez dans le conteneur
docker exec -it 容器ID/bin/bash
5. Installez le plugin
elasticsearch-plugin install file:/usr/share/elasticsearch/ingest-attachment-7.12.1.zip
Comme suit, l'installation est terminée :
6. Sortez du conteneur
exit
7. Redémarrez elasticsearch
docker restart 容器ID
À ce stade, l'installation d'Elasticsearch, kibana, analysis-ik, elasticsearch-head et ingest-attachment est terminée.