joacub / geonames-server
ZF2 module, index geonames data & provides a search API using Elasticsearch
Installs: 7
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 8
Type:module
pkg:composer/joacub/geonames-server
Requires
- php: >=5.3.3
- zendframework/zendframework: 2.*
This package is not auto-updated.
Last update: 2025-10-21 08:47:21 UTC
README
Introduction
GeonamesServer is ZF2 module. It indexes geonames data & provides a search API using Elasticsearch.
Elasticsearch is a distributed, RESTful, open source search server based on Apache Lucene.
→ Demo
→ Composer package
Elasticsearch index mapping
{ "geonameid": "2988507", "country": "FR", "name": "Paris", "latitude": "48.85341", "longitude": "2.3488", "population": 2138551, "timezone": "Europe/Paris", "type": "city", "parents": [ { "geonameid": "2968815", "name": "Paris", "country": "FR", "type": "ADM2" }, { "geonameid": "3012874", "name": "Île-de-France", "country": "FR", "type": "ADM1" }, { "geonameid": "3017382", "name": "France", "country": "FR", "type": "country" } ] }
Module installation
-
install elasticsearch
-
cd my/project/directory -
create a
composer.jsonfile with following contents:{ "require": { "ghislainf/geonames-server": "dev-master" } } -
install composer via
curl -s http://getcomposer.org/installer | php(on windows, download http://getcomposer.org/installer and execute it with PHP) -
run
php composer.phar install -
open
my/project/directory/configs/application.config.phpand add the following key to yourmodules:'GeonamesServer', -
copy
config/geonamesserver.local.phpinmy/project/directory/config/autoload -
edit
my/project/directory/config/autoload/geonamesserver.local.php, let yourself guided by comments. -
import geonames data in your elasticsearch index :
$ php public/index.php geonames_install
Use API
Search :
GET /geonames/_search/{string_query}
GET /geonames/_search/{string_query}/{page}
GET /geonames/_search/{string_query}/{page}/{size}
{page} and {size} are optional, by default {page} = 1 and {size} = 10
Get document :
GET /geonames/_get/{geonameid}
GET /geonames/_get/{geonameid},{geonameid},..