Skip to content
Snippets Groups Projects
elasticsearch.helpers.js 1.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • const axios = require('axios');
    
    module.exports.getDatasetInfoFromES = async (elasticsearchUrl, layer, fields, cookies, pathToFile) => {
      let options = {
        method: 'POST',
        url: `${elasticsearchUrl}/_search?request_cache=false`,
        data: {
          "from": 0,
          "size": 1,
          "_source": fields,
          "query": {
            "term": {
              "metadata-fr.link.name.keyword": layer
            }
          }
        },
      };
    
      if (pathToFile) {
        options = {
          method: 'POST',
          url: `${elasticsearchUrl}/_search?request_cache=false`,
          data: {
            "from": 0,
            "size": 1,
            "_source": fields,
            "query": {
              "bool": {
                "should": [
                  {
                    "term": {
                      "metadata-fr.link.name.keyword": layer
                    }
                  },
                  {
                    "match_phrase": {
                      "metadata-fr.link.url": {
                        "query": pathToFile
                      }
                    }
                  }
                ]
              }
            }
          }
        };
      }
    
      if (cookies) {
        options.headers = {
          cookie: cookies,
        };
      }
    
      let response;
    
      try {
        response = await axios(options)
      } catch (err) {
        throw {
          err,
          status: 500,
          message: "Request to Elasticsearch failed",
        };
      }
    
      // If no results are found it means the specified dataset mvt layer doesn't exists
      if (response.data.hits.hits < 1) {
        throw {
          status: 404,
          message: "Layer not found.",
        };
      }
    
      return response.data.hits.hits[0]._source;
    };