SearchLog API

概要

SearchLog APIは、Fess の検索ログを取得・管理するためのAPIです。 ユーザーの検索行動分析、検索品質の改善に活用できます。

ベースURL

/api/admin/searchlog

エンドポイント一覧

メソッド パス 説明
GET / 検索ログ一覧取得
GET /{id} 検索ログ詳細取得
DELETE /{id} 検索ログ削除
DELETE /delete-all 検索ログ一括削除
GET /stats 検索統計取得

検索ログ一覧取得

リクエスト

GET /api/admin/searchlog

パラメーター

レスポンス

{
  "response": {
    "status": 0,
    "logs": [
      {
        "id": "searchlog_id_1",
        "searchWord": "Fess インストール",
        "requestedAt": "2025-01-29T10:00:00Z",
        "responseTime": 125,
        "hitCount": 234,
        "queryOffset": 0,
        "queryPageSize": 10,
        "user": "user001",
        "userSessionId": "session_abc123",
        "clientIp": "192.168.1.100",
        "referer": "https://example.com/",
        "userAgent": "Mozilla/5.0 ...",
        "roles": ["user", "admin"],
        "languages": ["ja"]
      },
      {
        "id": "searchlog_id_2",
        "searchWord": "検索 設定",
        "requestedAt": "2025-01-29T09:55:00Z",
        "responseTime": 98,
        "hitCount": 567,
        "queryOffset": 0,
        "queryPageSize": 10,
        "user": "user002",
        "userSessionId": "session_def456",
        "clientIp": "192.168.1.101",
        "referer": "",
        "userAgent": "Mozilla/5.0 ...",
        "roles": ["user"],
        "languages": ["ja", "en"]
      }
    ],
    "total": 10000
  }
}

レスポンスフィールド

フィールド 説明
id 検索ログID
searchWord 検索キーワード
requestedAt 検索日時
responseTime レスポンス時間(ミリ秒)
hitCount ヒット件数
queryOffset 結果のオフセット
queryPageSize ページサイズ
user ユーザーID
userSessionId セッションID
clientIp クライアントIPアドレス
referer リファラー
userAgent ユーザーエージェント
roles ユーザーロール
languages 検索言語

検索ログ詳細取得

リクエスト

GET /api/admin/searchlog/{id}

レスポンス

{
  "response": {
    "status": 0,
    "log": {
      "id": "searchlog_id_1",
      "searchWord": "Fess インストール",
      "requestedAt": "2025-01-29T10:00:00Z",
      "responseTime": 125,
      "hitCount": 234,
      "queryOffset": 0,
      "queryPageSize": 10,
      "user": "user001",
      "userSessionId": "session_abc123",
      "clientIp": "192.168.1.100",
      "referer": "https://example.com/",
      "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
      "roles": ["user", "admin"],
      "languages": ["ja"],
      "clickLogs": [
        {
          "url": "https://fess.codelibs.org/install.html",
          "docId": "doc_123",
          "order": 1,
          "clickedAt": "2025-01-29T10:00:15Z"
        }
      ]
    }
  }
}

検索ログ削除

リクエスト

DELETE /api/admin/searchlog/{id}

レスポンス

{
  "response": {
    "status": 0,
    "message": "Search log deleted successfully"
  }
}

検索ログ一括削除

リクエスト

DELETE /api/admin/searchlog/delete-all

パラメーター

レスポンス

{
  "response": {
    "status": 0,
    "message": "Search logs deleted successfully",
    "deletedCount": 5000
  }
}

検索統計取得

リクエスト

GET /api/admin/searchlog/stats

パラメーター

レスポンス

{
  "response": {
    "status": 0,
    "stats": {
      "totalSearches": 50000,
      "uniqueUsers": 1234,
      "averageResponseTime": 156,
      "averageHitCount": 345,
      "zeroHitRate": 0.05,
      "topSearchWords": [
        {"word": "Fess", "count": 1500},
        {"word": "インストール", "count": 800},
        {"word": "設定", "count": 650}
      ],
      "searchesByDate": [
        {"date": "2025-01-29", "count": 2500},
        {"date": "2025-01-28", "count": 2300},
        {"date": "2025-01-27", "count": 2100}
      ]
    }
  }
}

使用例

検索ログ一覧の取得

curl -X GET "http://localhost:8080/api/admin/searchlog?size=100&page=0" \
     -H "Authorization: Bearer YOUR_TOKEN"

期間を指定して取得

curl -X GET "http://localhost:8080/api/admin/searchlog?from=2025-01-01T00:00:00Z&to=2025-01-31T23:59:59Z" \
     -H "Authorization: Bearer YOUR_TOKEN"

特定ユーザーの検索ログ

curl -X GET "http://localhost:8080/api/admin/searchlog?user=user001" \
     -H "Authorization: Bearer YOUR_TOKEN"

特定キーワードの検索ログ

curl -X GET "http://localhost:8080/api/admin/searchlog?query=Fess" \
     -H "Authorization: Bearer YOUR_TOKEN"

検索統計の取得

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?from=2025-01-01&to=2025-01-31&interval=day" \
     -H "Authorization: Bearer YOUR_TOKEN"

古い検索ログの削除

# 30日より前のログを削除
curl -X DELETE "http://localhost:8080/api/admin/searchlog/delete-all?before=2024-12-30T00:00:00Z" \
     -H "Authorization: Bearer YOUR_TOKEN"

人気検索キーワードの抽出

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?from=2025-01-01&to=2025-01-31" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '.response.stats.topSearchWords'

検索品質の分析

# ゼロヒット率の確認
curl -X GET "http://localhost:8080/api/admin/searchlog/stats" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '{zeroHitRate: .response.stats.zeroHitRate, averageHitCount: .response.stats.averageHitCount}'

日別検索数の推移

curl -X GET "http://localhost:8080/api/admin/searchlog/stats?interval=day&from=2025-01-01&to=2025-01-31" \
     -H "Authorization: Bearer YOUR_TOKEN" | \
     jq '.response.stats.searchesByDate'

参考情報