summaryrefslogtreecommitdiffstats
path: root/asdctool/src/main/resources/es-resources/index_ops.py
diff options
context:
space:
mode:
Diffstat (limited to 'asdctool/src/main/resources/es-resources/index_ops.py')
-rw-r--r--asdctool/src/main/resources/es-resources/index_ops.py151
1 files changed, 151 insertions, 0 deletions
diff --git a/asdctool/src/main/resources/es-resources/index_ops.py b/asdctool/src/main/resources/es-resources/index_ops.py
new file mode 100644
index 0000000000..d1f3bb0021
--- /dev/null
+++ b/asdctool/src/main/resources/es-resources/index_ops.py
@@ -0,0 +1,151 @@
+import itertools
+import string
+import json
+from datetime import datetime
+from elasticsearch import Elasticsearch
+import elasticsearch
+import elasticsearch.helpers
+from elasticsearch.client import IndicesClient, CatClient
+import sys, os, getopt
+from file_utils import readFileToJson
+from config_properties import getGlobalVar
+
+
+
+def createIndex(client, indexName, createBody):
+ try:
+ print "start createIndex"
+ if (client == None):
+ client = Elasticsearch(['localhost'])
+ esIndexClient = IndicesClient(client)
+ res = deleteIndex(client, indexName)
+ if (res != 0):
+ print "operation failed"
+ return 2
+ create_res=elasticsearch.client.IndicesClient.create(esIndexClient, index=indexName, body=createBody)
+ print "create index response: ", create_res
+ if (create_res['acknowledged'] != True):
+ print "failed to create index"
+ return 1
+ else:
+ print "index ",indexName, " created successfully"
+ return 0
+ except Exception, error:
+ print "An exception was thrown!"
+ print str(error)
+ return 2
+
+
+def deleteIndex(client, indexName):
+ try:
+ print "start deleteIndex"
+ if (client == None):
+ client = Elasticsearch(['localhost'])
+ esIndexClient = IndicesClient(client)
+ isExists=elasticsearch.client.IndicesClient.exists(esIndexClient, indexName)
+ if ( isExists == True ):
+ delete_res=elasticsearch.client.IndicesClient.delete(esIndexClient, index=indexName)
+ if (delete_res['acknowledged'] != True):
+ print "failed to delete index"
+ return 1
+ else:
+ print "index ",indexName, " deleted"
+ return 0
+ else:
+ print "index not found - assume already deleted"
+ return 0
+ except Exception, error:
+ print "An exception was thrown!"
+ print str(error)
+ return 2
+
+def copyIndex(client, fromIndex, toIndex):
+ try:
+ print "start copyIndex"
+ if (client == None):
+ client = Elasticsearch(['localhost'])
+ client.indices.refresh(index=fromIndex)
+ count=client.search(fromIndex, search_type='count')
+ print "original index count: ",count
+ docNum, docErrors = elasticsearch.helpers.reindex(client, fromIndex, toIndex)
+ print "copy result: ", docNum, docErrors
+ if (docNum != count['hits']['total']):
+ print "Failed to copy all documents. expected: ", count['hits']['total'], " actual: ", docNum
+ return 1
+ # if (len(docErrors) != 0):
+ # print "copy returned with errors"
+ # print docErrors
+ # return 1
+ return 0
+ except Exception, error:
+ print "An exception was thrown!"
+ print str(error)
+ return 2
+
+
+def usage():
+ print 'USAGE: ', sys.argv[0], '-o <operation : create | delete | move> -n <indexName> -a <address> -f <mappingFile (for create)> -t <toIndex (for move operation)>'
+
+
+
+def main(argv):
+ print "start script with ", len(sys.argv), 'arguments.'
+ print "=============================================="
+
+ try:
+ opts, args = getopt.getopt(argv, "h:o:a:n:f:t:", ["operation","address","indexName","file","toIndex"])
+ except getopt.GetoptError:
+ usage()
+ sys.exit(2)
+
+ host = None
+ for opt, arg in opts:
+ print opt, arg
+ if opt == '-h':
+ usage()
+ sys.exit(2)
+ elif opt in ('-f', '--file'):
+ mapping=readFileToJson(arg)
+ elif opt in ('-a', '--address'):
+ host=arg
+ elif opt in ('-o', '--operation'):
+ operation=arg
+ elif opt in ('-n', '--indexName'):
+ indexName=arg
+ elif opt in ('-t', '--toIndex'):
+ destIndexName=arg
+
+ if (operation == None):
+ usage()
+ sys.exit(2)
+ elif (host == None):
+ print "address is mandatory argument"
+ usage()
+ sys.exit(2)
+ elif operation == 'create':
+ print "create new index ", indexName
+ client = Elasticsearch([{'host': host, 'timeout':5}] )
+ res = createIndex(client, indexName, mapping)
+
+ elif operation == 'delete':
+ print "delete index ", indexName
+ client = Elasticsearch([{'host': host, 'timeout':5}] )
+ res = deleteIndex(client, indexName)
+
+ elif operation == 'move':
+ print "move index ", indexName, " to ", destIndexName
+ client = Elasticsearch([{'host': host, 'timeout':5}] )
+ res = copyIndex(client, indexName, destIndexName)
+ else:
+ usage()
+ exit(2)
+ if res != 0:
+ print "ERROR: operation Failed"
+ exit(1)
+
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
+
+