You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Stephen Hess 9d54735e41 converted geojsonify_place_details to return instead of modify 7 years ago
.circleci Fix CircleCI script to skip Greenkeeper branch builds 7 years ago
bin Handle fatal errors in unit tests 9 years ago
controller added support for continent, ocean, and marinearea placetypes 7 years ago
helper converted geojsonify_place_details to return instead of modify 7 years ago
middleware check for missing parent object in confidence score computation 7 years ago
public Add link to WOF license file 9 years ago
query Added postalcode rules for node-postal call and fallbacks 7 years ago
routes Add default route redirecting to /v1 7 years ago
sanitizer treat undefined text-analyzer response as no house number available 7 years ago
service updated service name 7 years ago
test converted geojsonify_place_details to return instead of modify 7 years ago
.dockerignore Make .dockerignore node-specific 7 years ago
.gitignore Add pids directory to gitignore 9 years ago
.jshintignore remove code-climate hooks 10 years ago
.jshintrc tell eshint we allow ECMA6 functions 8 years ago
.travis.yml Remove install of gcc 4.8 in TravisCI 7 years ago
Dockerfile Use COPY instead of ADD 7 years ago
README.md Merge pull request #928 from pelias/location_bias 7 years ago
app.js Add default route redirecting to /v1 7 years ago
index.js Use a friendly message when Pelias has loaded 8 years ago
package.json added prune target to pre-commit to avoid npm weirdness 7 years ago
schema.js removed language service from schema 7 years ago

README.md

This repository is part of the Pelias project. Pelias is an open-source, open-data geocoder built by Mapzen that also powers Mapzen Search. Our official user documentation is here.

Pelias API Server

This is the API server for the Pelias project. It's the service that runs to process user HTTP requests and return results as GeoJSON by querying Elasticsearch.

NPM

Gitter

Documentation

See the Mapzen Search documentation.

Install Dependencies

Note: Pelias requires Node.js v4 or newer

npm install

scripts

The API ships with several convenience commands (runnable via npm):

  • npm start: start the server
  • npm test: run unit tests
  • npm run ciao: run functional tests (this requires that the server be running)
  • npm run docs: generate API documentation
  • npm run coverage: generate code coverage reports
  • npm run config: dump the configuration to the command line, which is useful for debugging configuration issues

pelias-config

The API recognizes the following properties under the top-level api key in your pelias.json config file:

parameter required default description
host yes specifies the url under which the http service is to run
textAnalyzer no addressit can be either libpostal or addressit however will soon be deprecated and only libpostal will be supported going forward
indexName no pelias name of the Elasticsearch index to be used when building queries
relativeScores no true if set to true, confidence scores will be normalized, realistically at this point setting this to false is not tested or desirable
accessLog no name of the format to use for access logs; may be any one of the predefined values in the morgan package. Defaults to "common"; if set to false, or an otherwise falsy value, disables access-logging entirely.
services no service definitions for point-in-polygon and placholder services. If missing (which is not recommended), the point-in-polygon and placeholder services will not be called.
defaultParameters.focus.point.lon
defaultParameters.focus.point.lat
no default coordinates for focus point

Example configuration file would look something like this:

{
  "esclient": {
    "keepAlive": true,
    "requestTimeout": "1200000",
    "hosts": [
      {
        "protocol": "http",
        "host": "somesemachine.elb.amazonaws.com",
        "port": 9200
      }
    ]
  },
  "api": {
    "host": "localhost:3100/v1/",
    "indexName": "foobar",  
    "relativeScores": true,
    "textAnalyzer": "libpostal",
    "services": {
      "pip": {
        "url": "http://mypipservice.com:3000"
      },
      "placeholder": {
        "url": "http://myplaceholderservice.com:5000"
      }
    }
    "defaultParameters": {
      "focus.point.lat": 12.121212,
      "focus.point.lon": 21.212121
    }
  },
  "interpolation": {
    "client": {
      "adapter": "http",
      "host": "internal-pelias-interpolation-dev-130430937.us-east-1.elb.amazonaws.com"
    }
  },
  "logger": {
    "level": "debug"
  }
}

Contributing

Please fork and pull request against upstream master on a feature branch. Pretty please; provide unit tests and script fixtures in the test directory.

Unit tests

You can run the unit test suite using the command:

$ npm test

HTTP tests

We have another set of tests which are used to test the HTTP API layer, these tests send expected HTTP requests and then assert that the responses coming back have the correct geoJSON format and HTTP status codes.

You can run the HTTP test suite using the command:

$ npm run ciao

Note: some of the tests in this suite fail when no data is present in the index, there is a small set of test documents provided in ./test/ciao_test_data which can be inserted in order to avoid these errors.

To inject dummy data in to your local index:

$ node test/ciao_test_data.js

You can confirm the dummy data has been inserted with the command:

$ curl localhost:9200/pelias/_count?pretty
{
  "count" : 9,
  ...
}

Continuous Integration

Travis tests every release against Node.js versions 4 and 6.

Build Status

Versioning

We rely on semantic-release and Greenkeeper to maintain our module and dependency versions.

Greenkeeper badge