Skip to content
Snippets Groups Projects
elasticsearch.helpers.js 1.53 KiB
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;
};