J'ai créé docker-compose.yml qui est une collection des conteneurs suivants:
--Elasticsearch: moteur de recherche --Kibana: écran de recherche simple --nginx: proxy inverse (authentification légère de l'utilisateur par ID / PW) --Python3: pour travailler avec le traitement et l'indexation des données
Vous voudrez peut-être rechercher des données texte dans votre maison, n'est-ce pas?
La fonction de recherche elle-même peut être fournie par Elasticsearch.
--Je veux un écran de recherche simple pour qu'il puisse être utilisé avec des non programmeurs (Kibana)
Dans de nombreux cas, des demandes telles que ... se rencontrent.
Nous avons créé un environnement pour répondre aux exigences ci-dessus. [^ 1]
[^ 1]: l'authentification de base peut être un peu plus astucieuse si vous utilisez Elasticsearch Security Cela peut être possible. De plus, la méthode présentée ci-dessous utilise une connexion http, et elle est robuste en termes de sécurité, alors pensez à la convertir en https en vous référant à cet article: https://qiita.com/hsano/items/3b4fb372c4dec0cabc08
Vous pouvez tous les trouver dans ce référentiel: https://github.com/chopstickexe/es-kibana-nginx-python
Le contenu principal est le suivant:
--docker-compose.yml: fichier de configuration pour le lancement et la liaison de 4 conteneurs d'Elasticsearch, Kibana, nginx, Python3 ensemble --index.py: exemple de code pour enregistrer (indexer) des données dans Elasticsearch dans un conteneur Python3 --data / sample.csv: exemples de données enregistrées dans index.py (comme vous pouvez le voir, il y a 4 impressions personnelles du travail de Nolan)
Avec ce docker-compose, l'environnement suivant sera lancé:
--Bien que quatre conteneurs d'Elasticsearch, Kibana, nginx et Python soient lancés, nginx est le seul conteneur dont le port est mappé sur l'hôte (l'accès HTTP est possible depuis l'extérieur de l'hôte). Par conséquent, Elasticsearch et Kibana ne sont accessibles que par ceux qui connaissent l'ID / PW défini dans nginx.
http: // host address
.docker exec
et d'exécuter du code Python qui traite et indexe les données. [^ 2][^ 2]: Utilisez également l'extension VSCode's Remote Containers pour vous connecter à un conteneur et éditer / exécuter le code. Est également possible.
L'explication ci-dessous est basée sur Ubuntu 18.04, mais si l'environnement est tel que docker-compose et le serveur HTTP Apache (plus précisément, la commande htpasswd) peuvent être exécutés, cela fonctionnera sur CentOS, Mac et Windows.
Tout d'abord, préparez un environnement dans lequel docker-compose est installé. Référence
Tout d'abord, installez apache2-utils (un package contenant un serveur HTTP).
$ sudo apt -y install apache2-utils
Clonez le référentiel ci-dessus chopstickexe / es-kibana-nginx-python.
Ensuite, pensez à un identifiant et un mot de passe pour vous connecter à Kibana (écran de recherche) qui sera lancé par la suite. (Dans l'exemple ci-dessous, connectez-vous avec ID = admin)
Exécutez la commande htpasswd comme suit pour créer le fichier (répertoire de clonage) / htpasswd / localhost
avec le mot de passe défini.
$ cd /path/to/repo
$ mkdir htpasswd && cd htpasswd
$ htpasswd -c localhost admin
#Entrez votre mot de passe ici
Ouvrez docker-compose.yml dans le répertoire cloné et ouvrez le [paramètre VIRTUAL_HOST du conteneur Kibana](https://github.com/chopstickexe/es-kibana-nginx-python/blob/master/docker-compose.yml Changez # L25) de localhost
à l'adresse IP de l'hôte ou à un FQDN comme foo.bar.com
.
Mappage de port du conteneur nginx de 80: 80
à héberger gratuitement Port: passez à 80
.
Démarrez le conteneur avec la commande docker-compose ci-dessous.
$ cd /path/to/this/directory
$ docker-compose up
Si vous n'avez pas modifié docker-compose.yml, depuis le navigateur hôte http: // localhost
,
Si vous le modifiez, ouvrez http: // host address
depuis le navigateur de votre environnement, connectez-vous avec l'ID et le mot de passe définis et vérifiez que vous pouvez voir l'écran Kibana.
Revenez au terminal de la machine hôte et entrez dans le conteneur Python avec la commande suivante:
$ docker exec -it python bash
Après être entré dans le conteneur Python, créez un environnement virtuel (venv) avec la commande suivante et pip installez les packages requis ici:
# python -m venv .venv
# source .venv/bin/activate
(.venv) # pip install -r requirements.txt
Après avoir installé le package, ajoutez les exemples de données à l'index nolan
d'Elasticsearch avec la commande suivante:
(.venv) # python index.py
Finished indexing
Le script Python index.py exécuté ici est ici. Ci-dessous, le type de données de la colonne RELEASE_DATE est défini sur «date» et le format est défini sur «aaaaMMjj».
es.indices.create(
index,
body={
"mappings": {
"properties": {"RELEASE_DATE": {"type": "date", "format": "yyyyMMdd"}}
}
},
)
Accédez à nouveau à Kibana à partir de votre navigateur Web et définissez les paramètres suivants:
Menu sur le côté gauche de l'écran (s'il n'est pas affiché, cliquez sur les trois en haut à gauche)
Sélectionnez Kibana> Modèles d'index à partir de et entrez nolan
comme nom de modèle d'index. Si le code Python ci-dessus peut être exécuté sans aucun problème, le message "Votre modèle d'index correspond à 1 source" s'affiche. Cliquez sur Étape suivante:
Définissez la colonne RELEASE_DATE
dans le champ Heure et cliquez sur Créer un modèle d'index.
Sélectionnez Découvrir dans le menu sur le côté gauche de l'écran, cliquez sur l'icône de calendrier au milieu de l'écran et définissez la plage de temps sur Relative> 11 ans auparavant. (Comme il contient un avis RELEASE_DATE assez ancien, il ne lancera pas la recherche à moins que vous ne le fassiez)
S'il est réglé correctement, vous verrez 4 avis comme ci-dessous:
Vous pouvez également rechercher des avis incluant «Tom Hardy» sur cet écran de découverte:
Veuillez également vous référer ici pour savoir comment utiliser kibana: https://qiita.com/namutaka/items/b67290e75cbd74cd9a2f
Recommended Posts