This commit is contained in:
syuilo 2018-07-04 20:13:05 +09:00
parent 9d49636cd1
commit 7293baa1f9
2 changed files with 42 additions and 41 deletions

View file

@ -2,53 +2,55 @@ import * as elasticsearch from 'elasticsearch';
import config from '../config'; import config from '../config';
// Init ElasticSearch connection // Init ElasticSearch connection
const client = new elasticsearch.Client({ const client = config.elasticsearch ? new elasticsearch.Client({
host: `${config.elasticsearch.host}:${config.elasticsearch.port}` host: `${config.elasticsearch.host}:${config.elasticsearch.port}`
}); }) : null;
// Send a HEAD request if (client) {
client.ping({ // Send a HEAD request
// Ping usually has a 3000ms timeout client.ping({
requestTimeout: 30000 // Ping usually has a 3000ms timeout
}, error => { requestTimeout: 30000
if (error) { }, error => {
console.error('elasticsearch is down!'); if (error) {
} else { console.error('elasticsearch is down!');
console.log('elasticsearch is available!'); } else {
} console.log('elasticsearch is available!');
}); }
});
client.indices.create({ client.indices.create({
index: 'misskey', index: 'misskey',
body: { body: {
settings: { settings: {
analysis: { analysis: {
analyzer: { analyzer: {
bigram: { bigram: {
tokenizer: 'bigram_tokenizer' tokenizer: 'bigram_tokenizer'
} }
}, },
tokenizer: { tokenizer: {
bigram_tokenizer: { bigram_tokenizer: {
type: 'nGram', type: 'nGram',
min_gram: 2, min_gram: 2,
max_gram: 2 max_gram: 2
}
} }
} }
} },
}, mappings: {
mappings: { note: {
note: { properties: {
properties: { text: {
text: { type: 'text',
type: 'text', index: 'analyzed',
index: 'analyzed', analyzer: 'bigram'
analyzer: 'bigram' }
} }
} }
} }
} }
} });
}); }
export default client; export default client;

View file

@ -1,3 +1,4 @@
import es from '../../db/elasticsearch';
import Note, { pack, INote } from '../../models/note'; import Note, { pack, INote } from '../../models/note';
import User, { isLocalUser, IUser, isRemoteUser, IRemoteUser, ILocalUser } from '../../models/user'; import User, { isLocalUser, IUser, isRemoteUser, IRemoteUser, ILocalUser } from '../../models/user';
import stream, { publishLocalTimelineStream, publishGlobalTimelineStream, publishUserListStream } from '../../publishers/stream'; import stream, { publishLocalTimelineStream, publishGlobalTimelineStream, publishUserListStream } from '../../publishers/stream';
@ -431,8 +432,6 @@ export default async (user: IUser, data: {
// Register to search database // Register to search database
if (note.text && config.elasticsearch) { if (note.text && config.elasticsearch) {
const es = require('../../../db/elasticsearch');
es.index({ es.index({
index: 'misskey', index: 'misskey',
type: 'note', type: 'note',