From 7994aa96e2625bd05b7a671e809714f4fd7c9ac2 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Wed, 4 Jul 2018 20:36:06 +0900
Subject: [PATCH] wip

---
 src/db/elasticsearch.ts | 70 +++++++++++++++++++++++------------------
 1 file changed, 39 insertions(+), 31 deletions(-)

diff --git a/src/db/elasticsearch.ts b/src/db/elasticsearch.ts
index 8e86a942e..4acff4079 100644
--- a/src/db/elasticsearch.ts
+++ b/src/db/elasticsearch.ts
@@ -1,6 +1,36 @@
 import * as elasticsearch from 'elasticsearch';
 import config from '../config';
 
+const index = {
+	settings: {
+		analysis: {
+			analyzer: {
+				bigram: {
+					tokenizer: 'bigram_tokenizer'
+				}
+			},
+			tokenizer: {
+				bigram_tokenizer: {
+					type: 'nGram',
+					min_gram: 2,
+					max_gram: 2
+				}
+			}
+		}
+	},
+	mappings: {
+		note: {
+			properties: {
+				text: {
+					type: 'text',
+					index: true,
+					analyzer: 'bigram'
+				}
+			}
+		}
+	}
+};
+
 // Init ElasticSearch connection
 const client = config.elasticsearch ? new elasticsearch.Client({
 	host: `${config.elasticsearch.host}:${config.elasticsearch.port}`
@@ -19,37 +49,15 @@ if (client) {
 		}
 	});
 
-	client.indices.create({
-		index: 'misskey',
-		body: {
-			settings: {
-				analysis: {
-					analyzer: {
-						bigram: {
-							tokenizer: 'bigram_tokenizer'
-						}
-					},
-					tokenizer: {
-						bigram_tokenizer: {
-							type: 'nGram',
-							min_gram: 2,
-							max_gram: 2
-						}
-					}
-				}
-			},
-			mappings: {
-				note: {
-					properties: {
-						text: {
-							type: 'text',
-							index: true,
-							analyzer: 'bigram'
-						}
-					}
-				}
-			}
-		}
+	client.indices.exists({
+		index: 'misskey'
+	}).then(exist => {
+		if (exist) return;
+
+		client.indices.create({
+			index: 'misskey',
+			body: index
+		});
 	});
 }