zoukankan      html  css  js  c++  java
  • cube.js elasticsearch 官方sql 扩展使用

    环境准备

    • es 环境
    version: "3"
    services: 
      es01:
        image: elasticsearch:7.3.2
        container_name: es01
       // 开启sql 以及认证
        environment:
          - "http.host=0.0.0.0"
          - "transport.host=localhost"
          - "network.host=0.0.0.0"
          - "http.cors.enabled=true"
          - "http.cors.allow-origin=*"
          - "xpack.ml.enabled=false"
          - "xpack.security.enabled=true"
          - "xpack.sql.enabled=true"
        ulimits:
          memlock:
            soft: -1
            hard: -1
        ports:
          - 9200:9200

    初始化账户(进入容器)

    elasticsearch-setup-passwords  auto -v
    • es 数据
      app.js
     
    const { Client } = require('@elastic/elasticsearch')
    const client = new Client({ node: 'http://elastic:ed824a5iPV33lrO7MOz0@localhost:9200' })
     
    async function run () {
      // Let's start by indexing some data
      await client.index({
        index: 'game',
        // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
        body: {
          character: 'Ned Stark',
          quote: 'Winter is coming.'
        }
      })
     
      await client.index({
        index: 'game',
        // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
        body: {
          character: 'Daenerys Targaryen',
          quote: 'I am the blood of the dragon.'
        }
      })
     
      await client.index({
        index: 'game',
        // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
        body: {
          character: 'Tyrion Lannister',
          quote: 'A mind needs books like a sword needs a whetstone.'
        }
      })
     
      // here we are forcing an index refresh, otherwise we will not
      // get any result in the consequent search
      await client.indices.refresh({ index: 'game' })
     
      // Let's search!
      const { body } = await client.search({
        index: 'game',
        // type: '_doc', // uncomment this line if you are using Elasticsearch ≤ 6
        body: {
          query: {
            match: { quote: 'winter' }
          }
        }
      })
     
      console.log(body.hits.hits)
    }
     
    run().catch(console.log)

    cube.js 配置

    .env

    CUBEJS_DB_URL=http://elastic:ed824a5iPV33lrO7MOz0@localhost:9200
    CUBEJS_DB_ELASTIC_QUERY_FORMAT=json
    CUBEJS_DEV_MODE=true
    CUBEJS_DB_TYPE=elasticsearch
    CUBEJS_API_SECRET=b9a87765c28b91d570e51647c3e7cbb5a71364147bdfbef65ffa307808ef9128b98142883a541e48a8b8517d0e02d7e8344ac694c29e7b0f09a3ee0df10755d8

    package.json

    {
      "name": "myappdemo",
      "version": "0.0.1",
      "private": true,
      "scripts": {
        "dev": "./node_modules/.bin/cubejs-server"
      },
      "template": "docker",
      "templateVersion": "0.26.44",
      "devDependencies": {
        "@cubejs-backend/cubestore-driver": "^0.28.8",
        "@cubejs-backend/elasticsearch-driver": "^0.28.8",
        "@cubejs-backend/server": "^0.28.8"
      }
    }

    访问效果


    说明

    对于database 的处理有点问题,多了main,都是可以使用的

    参考资料

    https://www.npmjs.com/package/@elastic/elasticsearch
    https://cube.dev/docs/reference/environment-variables#database-connection

  • 相关阅读:
    Mongoexport导出数据,Mongoimport导入数据,mongodump备份数据,mongorestore恢复恢复
    php7中使用mongodb的驱动
    windows(X64)+apche2.4+php7.2下安装mongodb
    windows(X64)下安装apche2.4+php7.2+mysql5.7
    Django2.0 path与Django1.x版本url正则匹配问题
    Django: ImportError: No module named 'corsheaders'
    linux开启端口
    MySQL 存储过程传参数实现where id in(1,2,3,...)示例
    ubuntu安装pip3
    在Ubuntu 16.04 安装python3.6 环境并设置为默认
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/15068241.html
Copyright © 2011-2022 走看看