|
6 years ago | |
---|---|---|
.circleci | 6 years ago | |
bin | 6 years ago | |
controller | 6 years ago | |
helper | 6 years ago | |
middleware | 6 years ago | |
public | 6 years ago | |
query | 6 years ago | |
routes | 6 years ago | |
sanitizer | 6 years ago | |
service | 6 years ago | |
test | 6 years ago | |
.dockerignore | 7 years ago | |
.gitignore | 9 years ago | |
.jshintignore | 10 years ago | |
.jshintrc | 8 years ago | |
.npmrc | 7 years ago | |
.travis.yml | 6 years ago | |
Dockerfile | 6 years ago | |
LICENSE | 7 years ago | |
README.md | 6 years ago | |
app.js | 7 years ago | |
index.js | 6 years ago | |
package.json | 6 years ago | |
schema.js | 7 years ago |
README.md
This repository is part of the Pelias project. Pelias is an open-source, open-data geocoder originally sponsored by Mapzen. 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 and the other Pelias services.
Documentation
Full documentation for the Pelias API lives in the pelias/documentation repository.
Install Dependencies
Note: Pelias requires Node.js v6 or newer
npm install
scripts
The API ships with several convenience commands (runnable via npm
):
npm start
: start the servernpm test
: run unit testsnpm run ciao
: run functional tests (this requires that the server be running)npm run docs
: generate API documentationnpm run coverage
: generate code coverage reportsnpm run config
: dump the configuration to the command line, which is useful for debugging configuration issues
Configuration via pelias-config
The API recognizes the following properties under the top-level api
key in your pelias.json
config file:
parameter | required | default | description |
---|---|---|---|
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, libpostal, placeholder, and interpolation services. If missing (which is not recommended), the services will not be called. | |
defaultParameters.focus.point.lon defaultParameters.focus.point.lat |
no | default coordinates for focus point | |
targets.layers_by_source targets.source_aliases targets.layer_aliases |
no | custom values for which sources and layers the API accepts (more info). |
|
attributionURL |
no | (autodetected) | The full URL to use for the attribution link returned in all Pelias responses. Pelias will attempt to autodetect this host, but it will often be correct if, for example, there is a proxy between Pelias and its users. This parameter allows setting a specific URL to avoid any such issues |
A good starting configuration file includes this section (fill in the service and Elasticsearch hosts as needed):
{
"esclient": {
"hosts": [{
"host": "elasticsearch"
}]
},
"api": {
"services": {
"placeholder": {
"url": "http://placeholder:4100"
},
"libpostal": {
"url": "http://libpostal:8080"
},
"pip": {
"url": "http://pip-service:4200",
"timeout": 1000,
"retries": 2
},
"interpolation": {
"url": "http://interpolation:4300"
}
}
},
"logger": {
"level": "debug"
}
}
The timeout
and retry
values, as show in in the pip
service section, are optional but configurable for all services (see pelias/microservice-wrapper for more details).
Configuration via Environment variable
Most Pelias configuration is done through pelias-config, however the API has additional environment variables that affect its operation:
environment variable | default | description |
---|---|---|
HOST | undefined |
The network interface the Pelias API will bind to. Defaults to whatever the current Node.js default is, which is currently to listen on all interfaces. See the Node.js Net documentation for more info. |
PORT | 3100 | The TCP port the Pelias API will use for incoming network connections. |
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 all supported Node.js versions.
Versioning
We rely on semantic-release and Greenkeeper to maintain our module and dependency versions.