🧭 あなたに最適なVPSを30秒で無料診断 診断する →

【2026年版】社内Wikiの検索を爆速化!VPS上にMeilisearchなどの検索エンジンをホストする

読む前に30秒だけ。用途・予算を選ぶだけで、あなたに最適なVPSがわかります(無料・登録不要) 無料診断 →

【2026年版】社内Wikiの検索を爆速化!VPS上にMeilisearchなどの検索エンジンをホストする


【最初に結論】自分ならMeilisearch一択、VPSは月1,000円台で十分

はっきり書いておきます。

  • 検索エンジン選び → Meilisearch。Elasticsearchは最初に選ばなくていい
  • VPSスペック → 2GBプランでスタート。月830〜1,500円の固定料金で管理がラク
  • SaaS(Algolia)との比較 → 月$500〜かかるAlgoliaと体験はほぼ同じ。VPS代だけで済む
  • GPU → この用途に完全に不要。GPU付きVPSを勧めてくる記事があったら広告費目的を疑っていい

「社内Wikiで検索しても欲しい情報が出てこない」「NotionやConfluenceの検索が遅くてイライラする」——この悩み、自分も通ってきた道です。結論から言うと、VPS上にMeilisearchを置くだけでインスタント検索(打った瞬間に結果が返る)が実現します。しかもセットアップは5分で終わる。

「本当に5分で終わるの?」と思うのは当然なので、以下で実際の手順をそのまま書きます。


Meilisearchとは?

Meilisearchは2019年創業のフランス発のオープンソース全文検索エンジンです。Rust製でレスポンスが50ms以下、タイポに強い(ファジーマッチ)、日本語対応済み、セットアップが驚くほど簡単という特徴があります。

ぶっちゃけ、「Rust製だから速い」「フランス発だから」みたいな話はどうでもよくて、「Dockerで1コマンド起動して、JSONを投げたら検索できる」 この手軽さが最大の理由です。Elasticsearchみたいに設定ファイルと格闘しなくていい。「なんかよくわからないけど動いた」で十分なんです、最初は。


主要検索エンジンの比較

項目MeilisearchElasticsearchTypesenseAlgolia(SaaS)
セットアップの簡単さ△(設定複雑)◎(SaaS)
レスポンス速度◎(~50ms)○(100ms〜)◎(~50ms)◎(CDN活用)
RAM消費△(重い)—(SaaS)
日本語対応◎(組み込み)○(プラグイン要)○(設定要)
タイポ耐性
月額コストVPS代のみVPS代のみVPS代のみ$0〜$500+
ライセンスSSPL(セルフホスト可)SSPLGPL-3.0プロプライエタリ

自分の判断基準を本音を言えば、:

社内Wiki用途なら、最初からElasticsearchを選ぶ理由はほぼないです。「なんとなく名前を聞いたことがあるから」でElasticsearchを選んで、設定の複雑さと4GB以上のRAM消費に挫折するのがよくあるパターン。自分も一度そのルートで時間を無駄にしました。

MeilisearchかTypesenseで動くものをまず作って、「これでは足りない」という具体的な理由が出てきたときに初めてElasticsearchを検討すれば十分です。99%のケースでその理由は出てこないと思いますが。

Algoliaは使い勝手は最高ですが、ドキュメントが増えると月$500〜余裕で超えます。1ドル150円換算で月7万5,000円。VPS月830円と比べると別次元のコストです。「お金で解決したい」という人以外には勧めません。


VPS環境でのMeilisearchセットアップ

XServer VPS →

推奨スペック(正直ベースの話)

ドキュメント数RAMストレージ
〜10万件2GB10GB
〜100万件4〜8GB50GB
100万件〜16GB以上100GB以上

自分の場合、社内WikiやMarkdownファイルの全文検索なら2GBプランで余裕でした。XServerVPSの2GBプランは830円/月(固定)。「毎月いくらかかるか計算したくない」人には固定料金のほうが精神的にラクです。ConoHaは時間課金もありますが、検索サーバーは常時起動するものなので月76時間を超えたあたりからXServerの固定プランのほうが安くなる。後で詳しく書きます。

はっきり言っておきます。この用途にGPU付きVPSは不要です。 MeilisearchはAI推論エンジンではなく全文検索エンジンです。GPU推しの記事を見かけたらアフィリエイト報酬目的の可能性を疑っていい。真剣に言っています。

Dockerで起動(最短5分)

# Meilisearch用ディレクトリ作成
mkdir -p /opt/meilisearch/data

# docker-compose.yml作成
cat > /opt/meilisearch/compose.yml << 'EOF'
services:
  meilisearch:
    image: getmeili/meilisearch:latest
    container_name: meilisearch
    ports:
      - "7700:7700"
    environment:
      - MEILI_MASTER_KEY=your_secure_master_key_here
      - MEILI_ENV=production
    volumes:
      - ./data:/meili_data
    restart: unless-stopped
EOF

# 起動
cd /opt/meilisearch && docker compose up -d

# 動作確認
curl http://localhost:7700/health
# {"status":"available"}

「最短5分」と書きましたが、自分が実際にやって5分かかりませんでした。Dockerさえ入っていれば本当にこれだけです。{"status":"available"} が返ってきた瞬間に「あ、動いてる」ってなります。

nginxでHTTPS化(推奨)

# /etc/nginx/sites-available/meilisearch
server {
    listen 443 ssl;
    server_name search.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/search.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/search.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:7700;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;

        # APIキー認証のため、Masterキーは公開しない
        # フロントエンドにはSearch-only APIキーを発行して渡す
    }
}

HTTPS化はやっておいたほうがいいです。「どうせ社内ツールだから」「イントラだから」でHTTPのまま放置して後で詰まるパターンを何度か見てきたので。Let’s Encryptで無料で入るので面倒くさがらずにやっておきましょう。5分もかからないです。


ドキュメントのインデックス化

APIでドキュメントを登録する

# インデックス作成
curl -X POST 'http://localhost:7700/indexes' \
  -H 'Authorization: Bearer your_secure_master_key_here' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "uid": "wiki",
    "primaryKey": "id"
  }'

# ドキュメントをバルク追加(JSON配列)
curl -X POST 'http://localhost:7700/indexes/wiki/documents' \
  -H 'Authorization: Bearer your_secure_master_key_here' \
  -H 'Content-Type: application/json' \
  --data-binary '[
    {
      "id": 1,
      "title": "VPSの選び方",
      "content": "VPSを選ぶ際は、メモリ・CPU・ストレージのバランスを考えます...",
      "category": "インフラ",
      "updated_at": "2026-07-16"
    },
    {
      "id": 2,
      "title": "Docker入門",
      "content": "Dockerはコンテナ型仮想化技術です...",
      "category": "開発",
      "updated_at": "2026-07-15"
    }
  ]'

ConoHa VPS →

Pythonスクリプトで既存Wikiをインデックス化

import meilisearch
import json
import glob

client = meilisearch.Client(
    'http://localhost:7700',
    'your_secure_master_key_here'
)
index = client.index('wiki')

# Markdownファイルを一括インデックス化
documents = []
for i, filepath in enumerate(glob.glob('/opt/wiki/**/*.md', recursive=True)):
    with open(filepath, 'r', encoding='utf-8') as f:
        content = f.read()
    
    # ファイル名からタイトル抽出
    title = filepath.split('/')[-1].replace('.md', '').replace('-', ' ')
    
    documents.append({
        'id': i + 1,
        'title': title,
        'content': content[:5000],  # 先頭5000文字
        'path': filepath,
    })

# バルク追加(タスクIDを返す)
task = index.add_documents(documents)
print(f"Task ID: {task.task_uid} — インデックス化を実行中...")

このスクリプト、自分の場合はMarkdownファイル500件くらいで試して1分かかりませんでした。content[:5000] で先頭5000文字に絞っているのは、全文を突っ込むとRAMを無駄に食うからです。検索用途なら冒頭で十分。「全文インデックスしないと引っかからないケースがある」という反論はわかりますが、まず動かしてから問題が出たら考えればいい。


検索APIの使い方

# 基本検索
curl -X POST 'http://localhost:7700/indexes/wiki/search' \
  -H 'Authorization: Bearer SEARCH_ONLY_API_KEY' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "q": "Docker VPS 環境構築",
    "limit": 10,
    "attributesToHighlight": ["title", "content"]
  }'

# フィルタリング検索(カテゴリ絞り込み)
curl -X POST 'http://localhost:7700/indexes/wiki/search' \
  -H 'Authorization: Bearer SEARCH_ONLY_API_KEY' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "q": "セキュリティ",
    "filter": "category = インフラ",
    "sort": ["updated_at:desc"],
    "limit": 5
  }'

フロントエンドへの組み込み(JavaScript)

import { MeiliSearch } from 'meilisearch'

const client = new MeiliSearch({
  host: 'https://search.yourdomain.com',
  apiKey: 'SEARCH_ONLY_API_KEY'  // 読み取り専用キーのみ公開
})

async function searchWiki(query) {
  const result = await client.index('wiki').search(query, {
    limit: 10,
    attributesToHighlight: ['title', 'content'],
    highlightPreTag: '<mark>',
    highlightPostTag: '</mark>'
  })
  return result.hits
}

SEARCH_ONLY_API_KEY を使う部分、ここを間違えてMasterキーをフロントエンドに直書きしている実装をたまに見かけます。はっきり言って危ないです。MasterキーはサーバーサイドのAPIやインデックス操作専用にして、フロントエンドには検索専用キーだけ渡してください。ここだけは手を抜かないでほしい。


よくある質問(FAQ)

A. MeilisearchはNotionやConfluenceに搭載された検索よりもタイポ耐性が高く、インスタント検索(キー入力のたびに結果更新)が高速です。また、Meilisearchは自社サーバー上で動くためデータが外部に送信されません。既存のWikiツールを捨てなくていい。検索だけMeilisearchに外出しするのが一番コスパのいい使い方です。
A. 10万件以下のドキュメント・シンプルな全文検索・日本語対応を優先するならMeilisearchが圧倒的に簡単です。ログ分析(ELKスタック)、地理情報検索、複雑なアグリゲーションが必要な場合はElasticsearchを選んでください。自分の判断では、社内WikiでElasticsearchが必要になるケースはほぼないです。最初からElasticsearchを選んで挫折するより、Meilisearchで動くものを作ってから移行を検討する順序が絶対に正しい。
A. 自社内でのセルフホストであれば商用利用可能です。ただし、MeilisearchをSaaSとして第三者に提供する場合はSSPLの制約を受けます。社内Wikiや自社サービスの検索基盤として利用するだけであれば問題ありません。
A. Notion APIを使ってページをエクスポートし、Meilisearchに追加することが可能です。`notion-client`(Python)でページ一覧を取得してJSONに変換、Meilisearchに追加するスクリプトを定期実行(cron)で同期する構成が一般的です。Notionを捨てなくていいのが地味に大きい。

まとめ:あなたの使い方で選ぶ判断テーブル

あなたの状況判断理由
社内WikiのMarkdownを検索したい(〜10万件)Meilisearch + VPS 2GB(月830〜1,500円)RAM 2GBで十分・セットアップ5分
NotionやConfluenceの検索に不満があるMeilisearch + Notion API連携既存ツールを捨てなくていい。検索だけ外出し
ログ分析やアグリゲーションが必要Elasticsearch(移行前提で)Meilisearchでは本格的なログ分析は辛い
とにかくすぐ使いたい、お金で解決するAlgolia設定ゼロだが月$500〜は覚悟
月のコストを固定したいXServer VPS(830円/月 固定)毎月計算しなくていいのが精神的にラク
まず試してみたい、コスト最小でConoHa VPS(時間課金)動作確認だけなら数円で済む
「GPU付きVPSにしたほうがいい」という記事を見た無視していい全文検索にGPUは不要。広告報酬目的の可能性が高い

コスト感の整理(正直ベース)

  • XServer VPS 2GBプラン:830円/月(= 1日あたり約27円)固定
  • ConoHa VPS 2GBプラン:約2円/時間(= 月換算で約1,488円。月76時間超えるとXServerのほうが安い)
  • Algolia:月$500〜(= 1ドル150円換算で月7.5万円〜、1日あたり約2,500円〜)

損益分岐点の話をはっきり言うと、検索サーバーは「使うときだけ立ち上げる」ものではなく常時起動するものです。24時間365日動かすと月720時間。ConoHaの時間課金だと720時間×2円=1,440円。XServerの830円より高くなります。つまり実際にはほぼXServerの固定プラン一択になる。「まず試したい」段階だけConoHaで、動作確認できたらXServerに移行するのが一番無駄がない流れです。

あと、「VPSを使わずに自分のPC立ち上げっぱなしで代替しよう」という発想はやめたほうがいいです。何かあったときにリモートデスクトップで入らないといけないから全然手放しにならないし、精神的に気になり続ける。月830円でそのストレスから解放されるなら安いです。


これが最終回答じゃないんだから、まず2GBプランのVPSでDockerを起動してみてください。うまくいかなかったらそのときに考えればいい。「やってみたい」と思ったなら、その気持ちのまま動いたほうがいい。

XServer VPSでMeilisearchを今すぐ始める →

ConoHa VPSで検索エンジン環境を構築する →

あわせて読みたい