ElasticSearch

Les connexions ElasticSearch créées dans Dashboard permettent d'indexer, de consulter ou de supprimer des documents stockés et d'accéder à d'autres fonctions offertes par ElasticSearch lui-même.

Indexation

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        conn = self.search.es.get('My Connection').conn

        # Create a document
        conn.create('my-idx', 'my-type', {'hello':'world'}, 'my-id')

Dans le server.log:

INFO - PUT http://es:9200/my-idx/my-type/my-id?op_type=create [status:201 request:0.057s]

Recherche

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        conn = self.search.es.get('My Connection').conn

        # Look up documents using ES syntax
        result = conn.search(q='hello:*')

        # Iterate over what ES gave us
        for item in result:
            self.logger.info(result)

Dans le server.log:

  INFO - GET http://es:9200/_search?q=hello%3A%2A [status:200 request:0.058s]
  INFO - {'hits': {'hits': [{'_score': 1.0, '_type': 'my-type', '_id': 'my-id' ..

Suppression

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):

    def handle(self):
        conn = self.search.es.get('My Connection').conn

        # Delete a document by its ID
        conn.delete('my-idx', 'my-type', 'my-id')

Dans le server.log:

INFO - DELETE http://es:9200/my-idx/my-type/my-id [status:200 request:0.003s]

Autres caractéristiques

L'objet de connexion est une instance de elasticsearch.client.Elasticsearch Référez-vous à sa documentation principale afin d'apprendre comment accéder à d'autres fonctionnalités telles que la suppression en masse, le comptage et plus encore.

# -*- coding: utf-8 -*-

# Zato
from zato.server.service import Service

class MyService(Service):
    def handle(self):
        conn = self.search.es.get('My Connection').conn

        self.logger.info(conn.__class__)
INFO - <class 'elasticsearch.client.Elasticsearch'>

Sujets connexes