Fessの管理APIに、複数のドキュメントを一括でインデックスに登録できるエンドポイントが追加されました。これにより、今までは管理APIで一件ずつドキュメントを追加する必要があった作業が、効率的に複数ドキュメントを直接登録できるようになりました。

複数データの一括登録は、大量の情報を効率よく検索システムに取り込む際に非常に有用です。

本稿では、この管理APIエンドポイントの使い方を詳しく解説します。

今回の動作確認は、Fess 14.18.0およびOpenSearch 2.18.0で行っています。 また、FessとOpenSearchの環境はすでに構築済みであることを前提とします。

アクセストークンの作成

管理APIを利用するためには、アクセストークンを事前に作成する必要があります。以下は、アクセストークンを管理画面から作成する手順です。

  1. 管理画面にログインし、「システム」 > 「アクセストークン」を選択します。
  2. 画面右上にある「新規作成」ボタンをクリックします。
  3. 以下のように必要な情報を入力します。「名前」は分かりやすい名前を付けます。
項目名 設定値
名前 TestToken
パーミッション {role}admin-api
  1. 入力が完了したら「作成」ボタンをクリックしてください。
  • アクセストークンの新規作成画面

作成すると、「アクセストークン」一覧画面に新しいトークンが表示されます。作成したトークンの名前をクリックし、「トークン」欄に表示されている値がアクセストークンです。このトークンをAPIの認証で利用します。

  • アクセストークンの確認

注意
アクセストークンは管理者権限での操作が可能になるため、取り扱いには十分注意してください。必要がなくなった場合は速やかに削除してください。

APIを利用してインデックスに登録

アクセストークンを作成したので、管理APIを使ってFessにドキュメントを送信します。

登録対象のフィールド名や型は doc.json を参考にしてください。

ドキュメントを登録する際には、以下に示す必須フィールドや言語指定用フィールドを適切に設定する必要があります。

  • 必須フィールド 以下のフィールドは必須です。必ず指定してください。

    • url
    • title
    • role
    • boost
  • langフィールド auto を指定すると、言語判定が行われて適切な言語用フィールドが追加されます。明示的に lang フィールドを指定した場合は、その言語でインデックスが登録されます。

ドキュメントの送信

ドキュメントを送信する際は、以下のようにフィールドの値を含めたドキュメントのオブジェクトを配列形式で記述します。ACCESS-TOKEN の部分は作成したアクセストークンに置き換えてください。

以下は送信例です。

$ curl -X POST -H "Content-Type:application/json" -H "Authorization: ACCESS-TOKEN" "http://localhost:8080/api/admin/documents/bulk" -d '{
  "documents": [
    {
      "lang": "en",
      "title": "Test 1",
      "content": "Test Message 1",
      "content_length": 15,
      "url": "http://www.codelibs.org/1.html",
      "host": "www.codelibs.org",
      "site": "www.codelibs.org/1.html",
      "filename": "1.html",
      "mimetype": "text/plain",
      "filetype": "text",
      "click_count": 0,
      "favorite_count": 0,
      "boost": 1.0,
      "last_modified": "1970-01-01T00:00:00.000Z",
      "timestamp": "1970-01-01T00:00:00.000Z",
      "created": "1970-01-01T00:00:00.000Z",
      "role": ["Rguest"]
    },
    {
      "lang": "auto",
      "title": "Test 2",
      "content": "Test Message 2",
      "url": "http://www.codelibs.org/2.html",
      "boost": 1.0
    }
  ]
}'

成功すると、以下のように "status" が 0 のレスポンスが返されます。

{
  "response": {
    "items": [
      {
        "result": "CREATED",
        "id": "c7c345e44bc421a66addde52c80d56bdc17756863fe7c74f00b55ae9e9e01b364b280c7f4eee94050fe9c3d206395ec9c7509b9009e5cbfa13fbf233092ec1dc"
      },
      {
        "result": "CREATED",
        "id": "07929a1cb024b771e1b65b5f6696876e408b1d7f01c2996853a3b1a82649dcc02c4c796967b26d3cb51ea7a134a860147b478150f49b61e24a2a7daf838bc389"
      }
    ],
    "version": "14.18",
    "status": 0
  }
}

エラーが発生した場合は、レスポンスに記載されているエラーメッセージを確認して適宜対応してください。

検索

Fess の検索画面で登録したドキュメントを検索してみましょう。管理APIで登録したドキュメントが検索結果として表示されます。

  • 検索画面

* * *

本稿では、Fessの管理APIを利用して複数のドキュメントを一括でインデックスに登録する方法を紹介しました。

アクセストークンを作成し、APIでドキュメントを送信することで、簡単かつ効率的にインデックスを構築することができます。このAPIを活用することで、独自のデータストレージや外部システムのデータを効率的にFessへ取り込み、検索対象を拡大することが可能になります。ぜひ、今回紹介した手順を参考に、Fessを活用した柔軟な検索環境の構築に挑戦してみてください。