Nuclear Pumpkin Mayhem

    @nodefony/elastic-bundle

    7.0.0-beta.7 • Public • Published

    Welcome to elastic-bundle

    Register and Configure elastic Bundle

    For a Register elastic-bundle add elastic: true in config framework

    ./config/config.js

    module.exports = {
      system: {
        /**
        * BUNDLES CORE
        */
        elastic: true
      }
    }

    Override elastic-bundle configuration your bundle

    ./app/config/config.js

    /**
     * OVERRIDE ELASTIC BUNDLE SETTINGS
     *   elasticsearch
     *
     *	 options  :  https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/client-configuration.html
     *
     */
    "elastic-bundle": {
      elasticsearch: {
        globalOptions: {
          ssl: {
            //key : path.resolve("config","certificates","server","privkey.pem"),
            //cert : path.resolve("config","certificates","server","cert.pem"),
            //ca : path.resolve("config","certificates","ca","nodefony-root-ca.crt.pem")
          }
        },
        connections: {
          main: {
            name: "main",
            nodes: ["http://localhost:9200"],
            log: {
              request: false,
              response: false,
              sniff: true,
              resurrect: true
            },
            maxRetries:10,
            sniffInterval: 5000,
            pingTimeout: 5000,
            requestTimeout:5000
          }
        }
      }
    },

    Example to use :

    ./controller/elasticController.js

    /**
     *    @Route ("/test/elastic")
     */
    module.exports = class elasticController extends nodefony.controller {
    
      constructor(container, context) {
        super(container, context);
        this.elastic = this.get("elastic");
        this.setJsonContext();
      }
    
      async getClient() {
        let conn = await this.elastic.getConnection("main");
        return conn.client;
      }
    
      async createIndex(index, id) {
        if (!index) {
          index = "nodefony";
        }
        const client = await this.getClient();
        const {
          body
        } = await client.indices.exists({
          index: index
        });
        let res = null;
        if (!body) {
          res = await client.index({
            index: index,
            id: id,
            body: {
              version: this.kernel.version,
              package: this.kernel.package
            }
          });
        } else {
          this.log(`Index : ${index} Already exist !!! `);
        }
        return res;
      }
    
      async ping() {
        return await this.client.ping();
      }
    
      /**
       *    @Method ({"GET"})
       *    @Route ("/index/{id}" , name="test-elastic-search", defaults={"id" = 1},requirements={"id" = "\d+")
       *
       */
      async indexAction(id) {
        const client = await this.getClient();
        await this.createIndex("nodefony", "id");
        let get = null ;
        try{
          get = await client.get({
            index: 'nodefony',
            id: id
          });
          return this.renderJson(get)
            .catch((e) => {
              throw e;
            });
        }catch(e){
          if ( e && e.meta && e.meta.statusCode ){
            return this.renderJson(e, e.meta.statusCode )
              .catch((e) => {
                throw e;
              });
          }
          return this.renderJson(e )
            .catch((e) => {
              throw e;
            });
        }
      }
    };

    Authors

    License

    Install

    npm i @nodefony/elastic-bundle

    DownloadsWeekly Downloads

    144

    Version

    7.0.0-beta.7

    License

    none

    Unpacked Size

    19 kB

    Total Files

    9

    Last publish

    Collaborators

    • ccamensuli