nanasi-apps.xyz

MisskeyでMeilisearchを導入するやり方

公開日: 2023/5/9

Meilisearchをインストール

https://www.meilisearch.com/docs/learn/cookbooks/running_production

sudo apt update
sudo apt install curl -y
curl -L https://install.meilisearch.com | sh
chmod +x meilisearch
sudo mv ./meilisearch /usr/local/bin/
sudo useradd -d /var/lib/meilisearch -b /bin/false -m -r meilisearch
curl https://raw.githubusercontent.com/meilisearch/meilisearch/latest/config.toml > ./meilisearch.toml
nano ./meilisearch.toml

ってやって適切に変える

具体的に言うとenv を "production" に変えたり log_level を変えたり コメントアウトされてる master_keyを変えたり

master_keyは16bytes以上じゃないといけないらしい

書き換え終わったら

sudo cp ./meilisearch.toml /etc/meilisearch.toml
mkdir /var/lib/meilisearch/data /var/lib/meilisearch/dumps /var/lib/meilisearch/snapshots
chown -R meilisearch:meilisearch /var/lib/meilisearch
chmod 750 /var/lib/meilisearch
sudo nano /etc/systemd/system/meilisearch.service

ここまでやったら下記を全部コピペして保存する

[Unit]
Description=Meilisearch
After=systemd-user-sessions.service

[Service]
Type=simple
WorkingDirectory=/var/lib/meilisearch
ExecStart=/usr/local/bin/meilisearch --config-file-path /etc/meilisearch.toml
User=meilisearch
Group=meilisearch

[Install]
WantedBy=multi-user.target

終わったら下記のコマンドをしてmeilisearchのセットアップはおしまい

sudo systemctl daemon-reload
sudo systemctl enable --now meilisearch

Misskeyのconfigを書く

sudo su - misskey
nano misskey/.config/default.yml

ってしてファイルの最後に下記をコピーペースト

apiKeyは書換えてね

meilisearch:
  host: localhost
  port: 7700
  apiKey: ''
  index: 'misskey'

これでたぶんmeilisearchが使えるようになる

やったね

おまけ

過去のノートのindex的なのを張る方法

このコマンドを実行してください。最初のDB_NAMEと最後らへんのAPIKEYは変えてください。

(LIMITを10000にしてるのでここは自由に変えてください)

psql -d DB_NAME -c "SELECT json_agg(row_to_json(t)) ::text  FROM (SELECT id, \"createdAt\", \"userId\", \"userHost\", \"channelId\",cw,text FROM note WHERE visibility IN ('home', 'public')LIMIT 10000) t" > notes_tmp

sed -i '1d;2d;x;$d;' notes_tmp

jq 'map(.createdAt |= (strptime("%Y-%m-%dT%H:%M:%S%Z") | mktime | . * 1000 + (. / 1000000 | floor)))' notes_tmp > notes.json

curl -X POST 'http://localhost:7700/indexes/misskey_notes/documents' --data @notes.json -H 'Content-Type: application/json' -H "Authorization: Bearer APIKEY"