A modular, open-source search engine for our world.
Pelias is a geocoder powered completely by open data, available freely to everyone.
What is Pelias?
Pelias is a search engine for places worldwide, powered by open data. It turns addresses and place names into geographic coordinates, and turns geographic coordinates into places and addresses. With Pelias, you’re able to turn your users’ place searches into actionable geodata and transform your geodata into real places.
We think open data, open source, and open strategy win over proprietary solutions at any part of the stack and we want to ensure the services we offer are in line with that vision. We believe that an open geocoder improves over the long-term only if the community can incorporate truly representative local knowledge.
Pelias Elasticsearch Schema Definition
This package defines the Elasticsearch schema used by Pelias. Pelias requires quite a few settings for performance and accuracy. This repository contains those settings as well as useful tools to ensure they are applied correctly.
See Pelias Software requirements for general Pelias requirements.
$ npm install pelias-schema
./bin/create_index # quick start
node scripts/drop_index.js # drop everything node scripts/drop_index.js --force-yes # skip warning prompt
update settings on an existing index
This is useful when you want to add a new analyser or filter to an existing index.
note: it is impossible to change the
number_of_shards for an existing index, this will require a full re-index.
node scripts/update_settings.js # update index settings
output schema file
Use this script to pretty-print the whole schema file or a single mapping to stdout.
check all mandatory elasticsearch plugins are correctly installed
Print a list of which plugins are installed and how to install any that are missing.
Like the rest of Pelias, the Pelias schema can be configured through a
pelias.json file read by pelias-config.
This allows configuring the name of the index created in Elasticsearch. The default is
Note: All Pelias importers also use this configuration value to determine what index to write to. Additionally, the Pelias API uses the related
api.indexName parameter to determine where to read from.
user customizable synonyms files
You may provide your own custom synonyms by editing files in the
$ ls -1 synonyms/custom_* synonyms/custom_admin.txt synonyms/custom_name.txt synonyms/custom_street.txt
You must edit the files before running
create_index.js, any changes made to the files will require you to drop and recreate the index before those synonyms are available.
Synonyms are only used at index-time. The filename contains the name of the elasticsearch field which the synonyms will apply. ie.
custom_name will apply to the
custom_street will apply to the
address_parts.name field and
custom_admin will apply to the
see: https://github.com/pelias/schema/pull/273 for more info.
With great power comes great responsibility. Synonyms files are often used as a hammer when a scalpel is required. Please take care with their use and make maintainers aware that you are using custom synonyms when you open support tickets.
pelias-schema npm module can be found here:
You can pull down a versioned copy of the pelias schema from npm:
var schema = require('pelias-schema'); console.log( JSON.stringify( schema, null, 2 ) );
Please fork and pull request against upstream master on a feature branch.
Pretty please; provide unit tests and script fixtures in the
Running Unit Tests
$ npm test
Running Integration Tests
Requires a running elasticsearch server (no other setup required)
$ npm run integration
Running elasticsearch in Docker (for testing purposes)
Download the image and start an elasticsearch docker container:
$ docker run --rm --name elastic-test -p 9200:9200 pelias/elasticsearch:7.5.1
Travis tests every release against all supported Node.js versions.