Example #1
0
def main():
    parser = argparse.ArgumentParser()

    parser.add_argument("index_file", help="Path to file containing index definition")
    parser.add_argument("data_file", help="Path to file containing json dump of documents to index")
    parser.add_argument("es_host", help="Elasticsearch Host to index against")
    parser.add_argument("es_port", help="Elasticsearch Host Transport Port")
    parser.add_argument("-r", "--replace", action="store_true", help="Overwrite index if it already exists")

    args = parser.parse_args()

    index_config_path = args.index_file
    documents_path = args.data_file
    host = args.es_host
    port = args.es_port

    overwrite = True if args.replace else False

    with open(index_config_path) as data_file:
        index_config = json.load(data_file)

    index_settings = index_config['index_settings']
    index_name = index_settings['indexname']
    doctypes = index_settings['doctypes']

    indexer = Indexer(host, port)
    indexer.create_index(index_name, index_settings['settings'], overwrite=overwrite)

    for doctype in doctypes:
        indexer.add_mappings(index_name, doctype, index_settings['mappings'][doctype])
        indexer.index_documents(documents_path, doctype, index_name)