in tools/setup.py [0:0]
def createIndex():
# Check if index already exists
if es.indices.exists(dbname):
if args.soe:
print("ElasticSearch index '%s' already exists and SOE set, exiting quietly" % dbname)
sys.exit(0)
else:
print("Error: ElasticSearch index '%s' already exists!" % dbname)
sys.exit(-1)
print("Creating index " + dbname)
settings = {
"number_of_shards" : shards,
"number_of_replicas" : replicas
}
mappings = {
"mbox" : {
"properties" : {
"@import_timestamp" : {
"type" : "date",
"format" : "yyyy/MM/dd HH:mm:ss||yyyy/MM/dd"
},
"attachments" : {
"properties" : {
"content_type" : {
"type" : "string",
"index" : "not_analyzed"
},
"filename" : {
"type" : "string",
"index" : "not_analyzed"
},
"hash" : {
"type" : "string",
"index" : "not_analyzed"
},
"size" : {
"type" : "long"
}
}
},
"body" : {
"type" : "string"
},
"cc": {
"type": "string"
},
"date" : {
"type" : "date",
"store" : True,
"format" : "yyyy/MM/dd HH:mm:ss",
"index" : "not_analyzed"
},
"epoch" : { # number of seconds since the epoch
"type" : "long",
"index" : "not_analyzed"
},
"from" : {
"type" : "string"
},
"from_raw" : {
"type" : "string",
"index" : "not_analyzed"
},
"in-reply-to" : {
"type" : "string",
"index" : "not_analyzed"
},
"list" : {
"type" : "string"
},
"list_raw" : {
"type" : "string",
"index" : "not_analyzed"
},
"message-id" : {
"type" : "string",
"index" : "not_analyzed"
},
"mid" : {
"type" : "string"
},
"private" : {
"type" : "boolean"
},
"references" : {
"type" : "string"
},
"subject" : {
"type" : "string",
"fielddata": True # dropped later if DB_MAJOR==2
},
"to" : {
"type" : "string"
}
}
},
"attachment" : {
"properties" : {
"source" : {
"type" : "binary"
}
}
},
"mbox_source" : {
"_all": {
"enabled": False # this doc type is not searchable
},
"properties" : {
"source" : {
"type" : "binary"
},
"message-id" : {
"type" : "string",
"index" : "not_analyzed"
},
"mid" : {
"type" : "string"
}
}
},
"mailinglists" : {
"_all": {
"enabled": False # this doc type is not searchable
},
"properties" : {
"description" : {
"type" : "string",
"index" : "not_analyzed"
},
"list" : {
"type" : "string",
# "index" : "not_analyzed"
},
"name" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"account" : {
"_all": {
"enabled": False # this doc type is not searchable
},
"properties" : {
"cid" : {
"type" : "string",
"index" : "not_analyzed"
},
"credentials" : {
"properties" : {
"altemail" : {
"type" : "object"
},
"email" : {
"type" : "string",
"index" : "not_analyzed"
},
"fullname" : {
"type" : "string",
"index" : "not_analyzed"
},
"uid" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"internal" : {
"properties" : {
"cookie" : {
"type" : "string",
"index" : "not_analyzed"
},
"ip" : {
"type" : "string",
"index" : "not_analyzed"
},
"oauth_used" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"request_id" : {
"type" : "string",
"index" : "not_analyzed"
}
}
},
"notifications" : {
"_all": {
"enabled": False # this doc type is not searchable
},
"properties" : {
"date" : {
"type" : "date",
"store" : True,
"format" : "yyyy/MM/dd HH:mm:ss"
},
"epoch" : {
"type" : "long"
},
"from" : {
"type" : "string",
# "index" : "not_analyzed"
},
"in-reply-to" : {
"type" : "string",
"index" : "not_analyzed"
},
"list" : {
"type" : "string",
# "index" : "not_analyzed"
},
"message-id" : {
"type" : "string",
"index" : "not_analyzed"
},
"mid" : {
"type" : "string",
# "index" : "not_analyzed"
},
"private" : {
"type" : "boolean"
},
"recipient" : {
"type" : "string",
"index" : "not_analyzed"
},
"seen" : {
"type" : "long"
},
"subject" : {
"type" : "string",
"fielddata": True # dropped later if DB_MAJOR==2
# "index" : "not_analyzed"
},
"to" : {
"type" : "string",
# "index" : "not_analyzed"
},
"type" : {
"type" : "string",
"index" : "not_analyzed"
}
}
}
}
if DB_MAJOR == 2: # ES 2 handles fielddata differently
del mappings['mbox']['properties']['subject']['fielddata']
del mappings['notifications']['properties']['subject']['fielddata']
res = es.indices.create(index = dbname, body = {
"mappings" : mappings,
"settings": settings
}
)
print("Index created! %s " % res)