From 7293baa1f9f6bd7226e22bd04bfeabede1eee621 Mon Sep 17 00:00:00 2001
From: syuilo <syuilotan@yahoo.co.jp>
Date: Wed, 4 Jul 2018 20:13:05 +0900
Subject: [PATCH] wip

---
 src/db/elasticsearch.ts     | 80 +++++++++++++++++++------------------
 src/services/note/create.ts |  3 +-
 2 files changed, 42 insertions(+), 41 deletions(-)

diff --git a/src/db/elasticsearch.ts b/src/db/elasticsearch.ts
index 2d90238c5a..a3ac494a8c 100644
--- a/src/db/elasticsearch.ts
+++ b/src/db/elasticsearch.ts
@@ -2,53 +2,55 @@ import * as elasticsearch from 'elasticsearch';
 import config from '../config';
 
 // Init ElasticSearch connection
-const client = new elasticsearch.Client({
+const client = config.elasticsearch ? new elasticsearch.Client({
 	host: `${config.elasticsearch.host}:${config.elasticsearch.port}`
-});
+}) : null;
 
-// Send a HEAD request
-client.ping({
-	// Ping usually has a 3000ms timeout
-	requestTimeout: 30000
-}, error => {
-	if (error) {
-		console.error('elasticsearch is down!');
-	} else {
-		console.log('elasticsearch is available!');
-	}
-});
+if (client) {
+	// Send a HEAD request
+	client.ping({
+		// Ping usually has a 3000ms timeout
+		requestTimeout: 30000
+	}, error => {
+		if (error) {
+			console.error('elasticsearch is down!');
+		} else {
+			console.log('elasticsearch is available!');
+		}
+	});
 
-client.indices.create({
-	index: 'misskey',
-	body: {
-		settings: {
-			analysis: {
-				analyzer: {
-					bigram: {
-						tokenizer: 'bigram_tokenizer'
-					}
-				},
-				tokenizer: {
-					bigram_tokenizer: {
-						type: 'nGram',
-						min_gram: 2,
-						max_gram: 2
+	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: 'analyzed',
-						analyzer: 'bigram'
+			},
+			mappings: {
+				note: {
+					properties: {
+						text: {
+							type: 'text',
+							index: 'analyzed',
+							analyzer: 'bigram'
+						}
 					}
 				}
 			}
 		}
-	}
-});
+	});
+}
 
 export default client;
diff --git a/src/services/note/create.ts b/src/services/note/create.ts
index ea20b063d5..89f9a91c9b 100644
--- a/src/services/note/create.ts
+++ b/src/services/note/create.ts
@@ -1,3 +1,4 @@
+import es from '../../db/elasticsearch';
 import Note, { pack, INote } from '../../models/note';
 import User, { isLocalUser, IUser, isRemoteUser, IRemoteUser, ILocalUser } from '../../models/user';
 import stream, { publishLocalTimelineStream, publishGlobalTimelineStream, publishUserListStream } from '../../publishers/stream';
@@ -431,8 +432,6 @@ export default async (user: IUser, data: {
 
 	// Register to search database
 	if (note.text && config.elasticsearch) {
-		const es = require('../../../db/elasticsearch');
-
 		es.index({
 			index: 'misskey',
 			type: 'note',