From acff20bc4925876df25c8ab30c99a5ff43d9056d Mon Sep 17 00:00:00 2001 From: Tom Kralidis Date: Tue, 10 Apr 2018 20:53:24 +0000 Subject: [PATCH] add loader for ES test data --- tests/load_es_data.py | 71 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 tests/load_es_data.py diff --git a/tests/load_es_data.py b/tests/load_es_data.py new file mode 100644 index 0000000..d7cedab --- /dev/null +++ b/tests/load_es_data.py @@ -0,0 +1,71 @@ +# ================================================================= +# +# Authors: Tom Kralidis +# +# Copyright (c) 2018 Tom Kralidis +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ================================================================= + +import json +import os +import sys + +from elasticsearch import Elasticsearch +es = Elasticsearch() + +index_name = 'ne_110m_populated_places_simple' +type_name = 'FeatureCollection' + +if (sys.argv) == 1: + print('Usage: {} '.format(sys.argv[0])) + sys.exit(1) + +index_name = os.path.splitext(os.path.basename(sys.argv[1]))[0] + +if es.indices.exists(index_name): + es.indices.delete(index_name) + +# index settings +settings = { + 'mappings': { + 'FeatureCollection': { + 'properties': { + 'geometry': { + 'type': 'geo_shape' + } + } + } + } +} + +# create index +es.indices.create(index=index_name, body=settings) + +with open(sys.argv[1]) as fh: + d = json.load(fh) + +for f in d['features']: + f['properties']['geonameid'] = int(f['properties']['geonameid']) + res = es.index(index=index_name, doc_type=type_name, + id=f['properties']['geonameid'], body=f)