import * as elasticsearch from "@elastic/elasticsearch"; import config from "@/config/index.js"; const index = { settings: { analysis: { analyzer: { ngram: { tokenizer: "ngram", }, }, }, }, mappings: { properties: { text: { type: "text", index: true, analyzer: "ngram", }, userId: { type: "keyword", index: true, }, userHost: { type: "keyword", index: true, }, }, }, }; // Init ElasticSearch connection const client = config.elasticsearch ? new elasticsearch.Client({ node: `${config.elasticsearch.ssl ? "https://" : "http://"}${ config.elasticsearch.host }:${config.elasticsearch.port}`, auth: config.elasticsearch.user && config.elasticsearch.pass ? { username: config.elasticsearch.user, password: config.elasticsearch.pass, } : undefined, pingTimeout: 30000, }) : null; if (client) { client.indices .exists({ index: config.elasticsearch.index || "misskey_note", }) .then((exist) => { if (!exist.body) { client.indices.create({ index: config.elasticsearch.index || "misskey_note", body: index, }); } }); } export default client;