GeonamesServer
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.json
file 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.php
and add the following key to yourmodules
:'GeonamesServer',
- copy
config/geonamesserver.local.php
inmy/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},..