ExAlice
WARNING: This is alpha software, do not use in production!
Installation of exalice from this repository
-
Ensure that Elasticsearch 6.4.0 is installed
-
Ensure that the analysis-icu plugin is installed:
# On Debian based systems
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
The path of the `plugin` command varies between different operating systems
-
Ensure that Elasticsearch is started
-
Run the import (after fetching deps, and compiling everything):
mix exalice.bootstrap # Populate the storage with sample data in this repository
When exalice is used as an external dependency in your application
- Add exalice to your list of dependencies in
mix.exs:
def deps do
[{:exalice, "~> 0.0.7-alpha"}]
end
-
Ensure that Elasticsearch 6.4.0 is installed
-
Ensure that the analysis-icu plugin is installed:
sudo /usr/share/elasticsearch/bin/elasticsearch-plugin install analysis-icu
The path might vary between different operating systems
-
Ensure that Elasticsearch is started
-
Add to your config/config.exs:
config :exalice,
provider: ExAlice.Geocoder.Providers.Elastic,
geocoder: ExAlice.Geocoder.Providers.OpenStreetMap,
index: :exalice,
doc_type: :location,
file: "data/germany-streets.json",
chunks: 5000
The available options for the `geocoder:` are
`ExAlice.Geocoder.Providers.GoogleMaps` or
`ExAlice.Geocoder.Providers.OpenStreetMap`
-
(optional) Put a json file generated with pbf2json from openstreetmap pbf(s) in your
data/folder -
Copy the germany-streets.json sample extract in your local
data/folder inside your application -
Run
mix exalice.bootstrap
To geocode an address execute:
-
Run
iex -S mix -
Type
ExAlice.Geocoder.geocode("Via Recoaro 3, Broni") -
You should receive back data from the configured geocoder provider (OpenStreetMap or Google Maps)
-
If you run again
ExAlice.Geocoder.geocode("Via Recoaro, Broni")you should receive back data from the storage (no external lookup)
NOTE: At the moment the geocoder part that relies on google maps has no possibility to use a google maps api key.