Maison  >  Article  >  Java  >  Comment implémenter l'action du client Java Elasticsearch

Comment implémenter l'action du client Java Elasticsearch

WBOY
WBOYavant
2023-05-22 08:43:501463parcourir

La plupart des opérations dans elasticsearch s'effectuent via les actions correspondantes, qui se trouvent dans le package d'actions. Sa structure est illustrée dans la figure ci-dessous :

Comment implémenter laction du client Java Elasticsearch

Voici une capture d'écran partielle du package Action, qui contient des actions correspondant à diverses fonctions. Les packages de chaque action sont également très similaires à index. Ces actions héritent toutes de l’action de base, leur mise en œuvre est donc très similaire. La figure suivante montre la relation d'héritage d'indexaction

Comment implémenter laction du client Java Elasticsearch

Ces actions ne sont que des substituts et n'implémentent pas de fonctions réelles, elles sont donc également très faciles à mettre en œuvre. Leur fonction principale est de fournir des méthodes pour créer de nouvelles réponses et requêtes, correspondant aux noms d'opérations correspondants. Prenons l'exemple d'indexaction. Son diagramme de méthode est le suivant :

Comment implémenter laction du client Java Elasticsearch

Vous pouvez voir qu'il ne fournit que deux nouvelles méthodes de réponse et de requête, et un champ NOM de mot sera utilisé pour les appels d'action ultérieurs. milieu. La fonction correspondante est implémentée dans la transportAction correspondante.

Comment implémenter laction du client Java Elasticsearch

L'interface TransportAction est héritée par tous les tansportAction. Lorsque le client appelle l'interface correspondante du client, le client enverra la requête à l'exécution de transportAction. Le TransportAction de chaque fonction implémente la méthode doExecute, et la logique de la fonction est implémentée dans cette méthode. Nous n'en parlerons pas ici pour l'instant. L'implémentation correspondante sera vue dans l'analyse fonctionnelle ultérieure.

Il existe un tel morceau de code dans l'analyse client :

TransportAction transportAction = actions.get((ClientAction)action) Sa fonction est d'obtenir le TransportAction basé sur l'action. Parce que l’action n’est qu’un proxy. L'implémentation de ces associations s'effectue dans le ActionModule, comme le démontre le code suivant :

registerAction(NodesInfoAction.INSTANCE, TransportNodesInfoAction.class);
        registerAction(NodesStatsAction.INSTANCE, TransportNodesStatsAction.class);
        registerAction(NodesShutdownAction.INSTANCE, TransportNodesShutdownAction.class);
        registerAction(NodesRestartAction.INSTANCE, TransportNodesRestartAction.class);
        registerAction(NodesHotThreadsAction.INSTANCE, TransportNodesHotThreadsAction.class);
        registerAction(ClusterStatsAction.INSTANCE, TransportClusterStatsAction.class);
        registerAction(ClusterStateAction.INSTANCE, TransportClusterStateAction.class);
        registerAction(ClusterHealthAction.INSTANCE, TransportClusterHealthAction.class)

Seule une partie du contenu est affichée ici, où le module liera l'action correspondante et TransportAction. De cette façon, lorsque le client aura besoin de recevoir une demande, il trouvera l'instance tansportAction correspondante en fonction de l'instance d'action correspondante, et la demande finale sera traitée sous celle-ci.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer