2016-12-28 14:49:51 -08:00
|
|
|
import * as elasticsearch from 'elasticsearch';
|
2018-04-01 21:15:53 -07:00
|
|
|
import config from '../config';
|
2016-12-28 14:49:51 -08:00
|
|
|
|
|
|
|
// Init ElasticSearch connection
|
2018-07-04 04:13:05 -07:00
|
|
|
const client = config.elasticsearch ? new elasticsearch.Client({
|
2016-12-28 14:49:51 -08:00
|
|
|
host: `${config.elasticsearch.host}:${config.elasticsearch.port}`
|
2018-07-04 04:13:05 -07:00
|
|
|
}) : null;
|
2016-12-28 14:49:51 -08:00
|
|
|
|
2018-07-04 04:13:05 -07:00
|
|
|
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!');
|
|
|
|
}
|
|
|
|
});
|
2018-07-04 04:02:45 -07:00
|
|
|
|
2018-07-04 04:13:05 -07:00
|
|
|
client.indices.create({
|
|
|
|
index: 'misskey',
|
|
|
|
body: {
|
|
|
|
settings: {
|
|
|
|
analysis: {
|
|
|
|
analyzer: {
|
|
|
|
bigram: {
|
|
|
|
tokenizer: 'bigram_tokenizer'
|
|
|
|
}
|
|
|
|
},
|
|
|
|
tokenizer: {
|
|
|
|
bigram_tokenizer: {
|
|
|
|
type: 'nGram',
|
|
|
|
min_gram: 2,
|
|
|
|
max_gram: 2
|
|
|
|
}
|
2018-07-04 04:02:45 -07:00
|
|
|
}
|
|
|
|
}
|
2018-07-04 04:13:05 -07:00
|
|
|
},
|
|
|
|
mappings: {
|
|
|
|
note: {
|
|
|
|
properties: {
|
|
|
|
text: {
|
|
|
|
type: 'text',
|
2018-07-04 04:23:55 -07:00
|
|
|
index: true,
|
2018-07-04 04:13:05 -07:00
|
|
|
analyzer: 'bigram'
|
|
|
|
}
|
2018-07-04 04:02:45 -07:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2018-07-04 04:13:05 -07:00
|
|
|
});
|
|
|
|
}
|
2016-12-28 14:49:51 -08:00
|
|
|
|
|
|
|
export default client;
|