Tutoriels de construction Python et ElasticSearch inclus Easy Search

l'apprentissage de la machine et le traitement du langage naturel

1 ElasticSearch Vue d'ensemble

Comprendre ES 1.1

ElasticSearch est un moteur de recherche basé sur la bibliothèque Lucene. Il fournit un moteur de recherche distribué, support multi-locataire texte intégral, vous pouvez stocker rapidement, rechercher et analyser des quantités massives de données. Il peut être utilisé pour rechercher une variété de documents et le support multi-location. ElasticSearch besoin au moins 8 Java.

1.2 scénarios d'application

boutique en ligne en ligne qui permet aux clients de rechercher des produits que vous vendez. Dans ce cas, vous pouvez utiliser ElasticSearch stocker l'ensemble du catalogue de produits et de l'inventaire, et de fournir des suggestions de recherche et de saisie semi-automatique pour eux.

ou la collecte et l'analyse des données du journal des transactions et l'exploration de ces données pour trouver des tendances, statistiques, sommaires ou anormale. Dans ce cas, vous pouvez utiliser Logstash pour collecter, agréger et analyser les données, puis laissez Logstash ces données à ElasticSearch. Une fois que les données sont dans ElasticSearch, vous pouvez effectuer une recherche et d'agrégation pour exploiter toute information qui vous intéresse.

plate-forme d'alerte de prix qui permet aux clients de spécifier une règle maîtrise des prix, tels que « Je suis intéressé par l'achat d'un produit électronique, si le prix du gadget dans le mois suivant ci-dessous $ X de tout fournisseur, je veux être informé. » . Dans ce cas, vous pouvez gratter le prix des fournisseurs, poussant dans ElasticSearch inverse et utiliser la fonction de recherche pour faire correspondre les changements de prix et les demandes des clients, et a finalement trouvé après les alertes match Poussé à ses clients.

1.3 Concepts clés

cluster de cluster: cluster est une collection d'un ou plusieurs nuds, qui, ensemble, sauvegarder vos données et procurera indice commun et des capacités de recherche sur différents tous les nuds.

noeuds nud: nud de cluster dans le cadre d'un seul serveur, le stockage de données et de participer à l'indexation et la fonctionnalité de recherche du cluster.

Index Index: index est une collection de documents caractéristiques similaires. Indice identifié par son nom, doit être en minuscules, dont le nom est utilisé dans l'exécution de l'indexation de documents, recherche, mise à jour et les opérations de suppression lorsque les références d'index.

Document Document: Document est l'unité d'information de base peut être indexé. Index qui fait référence à un document d'enregistrement unique.

fragmentation et réplique: Index de grandes quantités de données peuvent être stockées dans un seul nud peut dépasser les limites matérielles. Pour résoudre ce problème, ElasticSearch fournit une fonctionnalité appelée index subdivisé en plusieurs tranches.

1.4 Module de base

analyse: analyse lexicale et est principalement responsable du traitement de la langue, qui est, nous disons souvent le mot, peut se former en fin de compte la plus petite unité de stockage ou de recherche à terme par le module.

Création d'emplois est principalement responsable de l'indice: Module d'index.

Module de magasin: la lecture et l'écriture est principalement responsable de l'indice, principalement parce que certaines opérations de fichiers, son but principal est abstrait et indépendant de la plateforme de stockage du système de fichiers.

modules QueryParser: principalement responsables de l'analyse de notre requête Lucene génère la condition sous-jacente peut être identifiée.

Module de recherche: principalement responsable du travail de l'index de recherche.

modules de similarité: principalement responsables de la notation de la pertinence et de réaliser le tri.

1.5 Méthodes d'extraction

simples requêtes de mots: terme fait référence à une requête. Pour trouver une telle chaîne contenant « Lucene » document, vous pouvez simplement trouver le terme « Lucene » dans le dictionnaire, puis obtenir la table inversée correspondante dans la liste des documents peut être.

ET: fait référence à l'intersection de plusieurs collections. Pour trouver une telle chaîne contient à la fois le document Lucene et Solr qui contient la chaîne, puis regardez les étapes suivantes: trouver dans le dictionnaire terme Lucene Lucene obtenir la liste des documents correspondants. TermSolr trouvé dans le dictionnaire, correspondant pour obtenir la liste des documents Solr. La liste combinée, les listes de documents que l'intersection des deux opérations.

OU: se réfère à une collection d'une pluralité de rechercher et d'ensemble. Par exemple, pour trouver des documents qui contiennent la chaîne qui contient la chaîne luence ou Solr, vous trouverez les étapes ci-dessus, deux documents listes de tâches et opérations de jeu, le résultat de la combinaison contiennent ou contient Lucene Solr.

NON: un moyen de différenciation pour définir une pluralité d'ensembles. Pour trouver une telle chaîne contenant une chaîne Lucene Solr mais ne contient pas le document, regardez alors les étapes ci-dessus, les listes de documents comme la différence de deux opérations de réglage ont été inclus dans l'ensemble de la documentation comprend Lucene Solr moins l'ensemble des documents, après l'opération le résultat est inclus, mais ne contient pas Solr Lucene.

2 ES caractéristiques et avantages et inconvénients

2.1 Propriétés ES

ElasticSearch évolutive structuré et des données non structurées jusqu'au niveau PB.

ElasticSearch peut être utilisé pour remplacer le stockage MongoDB de documents et d'autres tâches.

ElasticSearch utilisation de non standardisé pour améliorer les performances de recherche.

ElasticSearch est l'un de la société de moteur de recherche populaire, actuellement utilisée comme Wikipédia, GitHub et ainsi de suite.

ElasticSearch est open source, disponible sous la licence Apache version 2.0.

2.2 avantage ES

ElasticSearch est un développement Java, ce qui le rend compatible avec presque toutes les plateformes.

ElasticSearch en temps réel.

ElasticSearch est distribué, ce qui le rend facile à étendre et à intégrer dans toute grande organisation.

En comparaison avec Apache Solr, très facile à manipuler plusieurs tenance ElasticSearch en.

ElasticSearch en utilisant un objet JSON en tant que réponse.

ElasticSearch prend en charge presque la plupart des types de documents, mais ne supporte pas le type de document texte rendu.

2.3 lacunes ES

ElasticSearch prennent pas en charge plusieurs langues et formats de données dans le traitement des demandes et des réponses données (disponible uniquement en JSON), ne peut pas être utilisé contrairement à l'Apache Solr CSV, format XML et similaires.

ElasticSearch lésions cérébrales, il y a des problèmes, se produira bien dans de rares cas.

3 installation et le déploiement ES

Ce document utilise l'installation ElasticSearch sous Win10, bien sûr, pour installer Linux plus facile opération. Après avoir terminé l'installation de package ElasticSearch de python, et le cas Interact.

La première étape: vérifier l'état

ElasticSearch besoin au moins Java 8, premier besoin java -version voir la version actuelle.

Étape 2: Installer ES

Utilisé ici ElasticSearch-7.1.0-windows-x86_64 Lien de téléchargement: https://pan.baidu.com/s/1k5AOGpMy8uJEXtA6KoNb7g Code d'extraction: qtmj.

bin: les instances ElasticSearch requis pour exécuter des scripts et plug-in de gestion

Le répertoire dans lequel le fichier de configuration: confg

lib: utilisation de la bibliothèque ElasticSearch

Tous les emplacements de mémoire utilisés pour les données ElasticSearch: données

journaux: le fichier journal des événements et de l'erreur sur la

plugins: où stocker les plug-ins installés, tels que l'outil de segmentation de mot chinois

Puis exécuter bin / ElasticSearch (Mac ou Linux) ou bin \ elasticsearch.bat (Windows) pour démarrer le ElasticSearch. Nous avons constaté que, après la page de démarrage ne sont pas des informations réalistes, si le réseau local testé Unicom:

défaut général se trouve, les données requête montre en raison de problèmes de pare-feu, testé près du « pare-feu réseau public »:

Nous allons ping dans IP locale:

A cette époque, il a été démontré que le statut de ping, recommencer bin \ elasticsearch.bat (Windows), ouvrez http: // localhost: 9200 / affiche l'installation suivante a réussi ES.

  La troisième étape: python installé ES

Le téléchargement est https://www.elastic.co/downloads/elasticsearch. Si les dispositions font référence à l'article sous Windows. Si les développeurs Python peuvent utiliser pip installer ElasticSearch installation.

4 ES pour construire la recherche en texte intégral

4.1 Insérer des données

Ouvrez l'environnement d'exécution python, première importation d'importation ElasticSearch ElasticSearch [], puis écrire une méthode pour insérer les données:

 # Insérer des données

 def InsertDatas ():

# L'hôte par défaut est localhost, port, mais vous pouvez également spécifier l'hôte et le port à 9200.

es = ElasticSearch ()

es.create (indice = "my_index", DOC_TYPE = "test_type", id = 11, ignorer = , body = { "name": "python", "adr": 'Sichuan'})

# Résultats de la requête

entraîner = es.get (index = "my_index", DOC_TYPE = "test_type" id = 11)

imprimer ( « données en un seul complet: \ n », résultat)

Des exemples de ElasticSearch, à savoir, lorsque la valeur par défaut est l'hôte NULL est localhost, le port 9200. Vous pouvez également spécifier IP réseau et le port est vide. En créant des index et des index des documents, catégorie DOC_TYPE id document, le corps pour insérer le contenu des données, où les données ES uniquement support type JSON, ignorer = 409 ignorer l'exception. Les résultats sont les suivants:

4,2 insert en vrac données

Le cas ci-dessus, nous insérons un message, requête et afficher un certain nombre de paramètres, y compris l'indexation, type de document, le document ID unique qui identifie le numéro de version. Qui contient des informations de ressource de données, si nous voulons insérer plusieurs éléments d'information peuvent se référer au code suivant:

 # insérer des données en vrac

 def AddDatas ():

es = ElasticSearch ()

données =

pour i, les données énumération (données):

es.create (indice = "my_index", DOC_TYPE = "test_type",

 id = i, ignorer = , body = données)

# Résultats de la requête

entraîner = es.get (index = "my_index", DOC_TYPE = "test_type" id = 0)

print ( '\ n complet d'insertion en bloc de données: \ n', résultat )

Nous mettons données liste des données, si nous JSON les données sont stockées dans un fichier, vous pouvez également lire des messages texte et stockés dans les données, le peut être inséré suivant. J'ai utilisé ce dans le fichier énumération numéro d'identification ou un nombre aléatoire peut également être utilisé pour spécifier le format. Après tout insérer notre premier identifiant de requête d'information de sélection = 0, où les différentes requêtes ci-dessus, nous examinons le contenu de l'article peut être le résultat employée méthode, les résultats suivants:

4.3 Données de mise à jour

Si nous insérons les données en question, nous voulons modifier. méthode de mise à jour peut être utilisé, il y a contact avec notre MySQL, MongoDB et d'autres instructions SQL similaires. La seule note que nous avons mis à jour les données lors de l'utilisation { « doc »: { « name »: « python1 », « adr »: « Shenzhen 1 »}} en mode dictionnaire, en particulier logo doc ne peut pas oublier le code pour obtenir les résultats suivants:

 # 3 Mise à jour des données

def UpdateDatas ():

es = ElasticSearch ()

es.update (indice = "my_index", DOC_TYPE = "test_type", id = 11, ignorer = , body = { "doc": { "name": "python1", "adr": "Shenzhen 1" }})

# Résultats de mise à jour

entraîner = es.get (index = "my_index", DOC_TYPE = "test_type" id = 11)

print ( '\ n id = 11 mise à jour des données est terminée: \ t', résultat )

nous voulons juste ici pour savoir si le champ Nom de l'information mise à jour peut être utilisé plus tard la source ajouté méthode, pourquoi avez-vous le définissez? Voir l'analyse des données insérer des résultats d'exploitation.

4.4 aux données de suppression

Il est relativement simple, nous spécifions un index des documents, types de documents et ID de document peut être.

 # Supprimer les données

 def DeleteDatas ():

es = ElasticSearch ()

entraîner = es.delete (index = 'my_index', DOC_TYPE = 'test_type', id = 11)

imprimer ( '\ n suppression des données achèvement id = 11: \ t')

Les données de 4.5 Conditions

Nous insérons les données pour créer des données simples I, si nous voulons obtenir tous les documents dans l'index peuvent être utilisés { « requête »: { « match_all »: {}}} requête de critères, il est à craindre désigné est la méthode de recherche utilisée, ci-dessus requête des données en utilisant la méthode get, en fait, les deux peuvent être utilisés comme une requête. Code est la suivante:

 # Requête Condition

 def ParaSearch ():

es = ElasticSearch ()

query1 = es.search (indice = "my_index", body = { "requête": { "match_all": {}}})

print ( '\ n interroger tous les documents \ n', query1)

query2 = es.search (indice = "my_index", body = { "requête": { "terme": { 'name': 'python'}}})

print ( '\ n Trouvez le nom de la documentation Python: \ n', query2 )

Nous obtenons un index de toutes les informations de documents

Obtenir les informations contenues dans le nom du document de Python

Cet article de l'apprentissage de la machine et à la création de traitement du langage naturel, nous pouvons nous concentrer ondes ~

Ici, l'enseignant à partager avec vous leur propre sorte de bien ce cours d'apprentissage Python, l'espoir que nous pouvons en tirer des leçons, en particulier pour les débutants Python pratique, quatrième année de ma fille, alors je lui laisse commencer un petit apprentissage des langues de programmation pour les deux langage Java et Python, je laisse mes filles commencé à apprendre Python, puis d'apprendre une autre langue de programmation, Python est aussi la nature concise détermine la priorité, mais nous avons préféré a décidé sélective!

Eh bien, a déclaré que les accusations ne parlaient pas beaucoup, juste leur dire d'apprendre la route, puis je l'ai également envoyé un il me souviens très bien, nous pouvons spécifiquement regarder!

Python gamme complète de l'itinéraire d'apprentissage

La première étape: Python Mise en route de la deuxième phase: Python en profondeur et améliorer Phase III: réseau Python et la programmation concurrente quatrième étape: Base de données de programmation Bases Phase V: Linux Programmation fondation sixième étape Environnement: noyau Python propose septième étape: Web la programmation huitième étape Fundamentals: cadre Python_Django neuvième étapes: après l'entrée: cadre Python_Tornado de la dixième étape: Python_ principal fournisseur d'électricité onzième étape du projet: phase de développement des reptiles Python XII: entrevue d'emploi réussie et la treizième étape Cheats la croissance rapide de la CTO

Fondamentaux vidéos Python vous pouvez professeur privé lettre (apprentissage) ont été acquis, l'enseignant peut ne pas avoir le temps, nous avons le temps de le faire le plus tôt possible!

Novice esclave chat de vue, les différentes étapes des chats ont besoin de nourriture pour chats est pas le même
Précédent
Un salaire mensuel de plus d'un million agent des matières fécales de pelle, vous garderez les Huskies faire?
Prochain
Comment les programmeurs éviter « optimisé »? Avec cette débrouillardise
Plus vite-RCNN de principe et a expliqué très clairement
Future guess minorité | qui remplacera le téléphone? Un dispositif portable ou les prochaines « killer applications »
Huawei est auto-développé système d'exploitation mobile, Android envisage des options alternatives « melons pour les masses. »
Shangxue Tang Baizhan programmeur informatique (4 derniers jours) Salut grab 520 coupons!
Wang Hanshan étude approfondie peinture « Gordon » à propos de Shu culturel premier « Forum Hunan Art » experts organisés et chercheurs en profondeur
Corgi en détresse que vous continuez à ramasser les matières fécales officier, l'effondrement de cause poils de chien Maison! la perte de cheveux Corgi-il censé faire?
IEEE a ordonné de nettoyer le Département des évaluateurs Huawei! la plus grande interdiction de l'organisation scolaire exposition e-mail au monde
stratégie d'entrée sur le marché indien Livre blanc (2018 premiers téléchargements d'applications mobiles, taux de croissance du premier)
Xuefeng randonnée en montagne à pied pas Shu roi Yelang canyon Sinko partout Fam
Changsha Salon international des machines de construction Shu gros point de l'industrie mondiale du café des points saillants vue
Zodiac: pas de contre-vie, le collier gros effets joueur 160, en raison de frapper les mains de l'attribut BUG