Misskey

MisskeyでMeilisearchを導入するやり方

keywords
date
May 9, 2023
slug
misskey-meilisearch
author
status
Public
tags
summary
Misskey v13.12.0にmeilisearchを導入する方法です
type
Post
thumbnail
https://files.mattyaski.co/null/b2677498-c505-456a-ac27-9d66da79b766.png
category
Misskey
updatedAt
Aug 24, 2023 12:46 AM
 

Meilisearchをインストール

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"