Démarrage rapide: Elasticsearch avec Python | par Jay Patel | Meilleure programmation | Octobre 2020

Online Coding Courses for Kids

Elasticsearch fournit des API REST pour gérer les données, mais pour utiliser efficacement ES avec Python, il existe une bibliothèque officielle appelée elasticsearch.

Appuyez simplement sur la commande suivante pour l’installer:

pip install elasticsearch

Désormais en Python, nous pouvons utiliser cette bibliothèque pour nous connecter à l’instance ES exécutée sur http: // localhost: 9200 /:

# make sure ES is up and runningfrom elasticsearch import Elasticsearch
es = Elasticsearch([{'host': 'localhost', 'port': 9200}])

En utilisant le es exemple, vous pouvez facilement effectuer une opération CRUD de base.

Maintenant, pour jouer avec des données factices, commençons par insérer des données à partir de JSON. Ici, je vais ajouter quelques informations client factices détenues par une banque. Vous pouvez générer votre choix de JSON factice à partir de Générateur JSON.

En exécutant cette fonction, l’instance ES crée d’abord un index nommé my-index s’il n’est pas déjà présent et ajoute chacun dictionary un par un. Puisque les données sont identiques, ES gère automatiquement la création d’index. Pour lister tous les indices disponibles, vous pouvez faire print(es.indices.get_alias("*")).

Les requêtes sont utilisées pour récupérer les données comme avec SQL. Nous pouvons directement exécuter la requête en l’écrivant dans un dict forme:

body = {'query': {'bool': {'must': [{'match': {'gender': 'male'}},
{'range': {'age': {'gte': 25}}}]}}}
res = es.search(index='my-index', body=body)
pprint(res)

Ici, nous disons simplement à ES de récupérer les données insérées de my-index, où gender est male et age est supérieur ou égal à 25:

L’utilisation de cette approche pour interroger des données peut devenir compliquée lors de la génération de requêtes longues et dynamiques. Heureusement pour Python, nous pouvons le simplifier en utilisant Elasticsearch DSL.

Elasticsearch DSL est une bibliothèque de haut niveau construite sur le client officiel de bas niveau. Nous pouvons réécrire la requête ci-dessus d’une manière plus pythonique:

query = Q('match', gender='male') & Q('range', age={'gte': 25})
s = Search(using=es, index='my-index').query(query)
response = s.execute()
for hit in response:
pprint(hit.name)

Comme vous pouvez le voir, la bibliothèque fournit un moyen plus pratique et idiomatique d’écrire et de manipuler des requêtes. Il reste proche du DSL JSON Elasticsearch, reflétant sa terminologie et sa structure.

La bibliothèque a pris en charge:

  • Création appropriée Query objets par nom (c’est-à-dire «match», «range»).
  • Composer des requêtes dans un composé bool requete.
  • Fournir un accès pratique aux données de réponse.
  • Suppression des crochets ou des crochets inutiles.

Ceci est juste une brève introduction. Vous pouvez en savoir plus sur Elasticsearch DSL dans le Documentation. J’ai découvert cette bibliothèque lorsque je cherchais une alternative à la génération de requêtes dynamiques complexes et cela m’a vraiment beaucoup profité. J’espère que tu trouves cela utile!

Close Menu