0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FSCrawlerでElasticsearchにデータを取り込む

0
Last updated at Posted at 2026-06-19

FSCrawlerを使用すると、ElasticsearchにPDFやMS Office形式のドキュメント (参考: サポート形式) を取り込むことができます。
watson-developer-cloudで Watson AssistantをElasticsearchと連携させる際のサンプル手順が公開されています。そこで使用されているFSCrawlerを実際に使ってみましたので、設定に使用するファイルの説明を中心にご紹介します。
注)2024年に試した内容のため、情報が古い可能性があることにご注意ください。

機能

FSCrawlerは、指定されたディレクトリー下に置かれたファイルを、指定されたElasticsearchのindexにインデックスします。取り込み対象のファイルなど、かなり細かい設定ができます。

取り込みたいデータを置いたコンピューター側でFSCrawlerを起動し、リモートのElasicsearchにデータをuploadするイメージです。

前提

FSCrawlerをDocker上で実行する場合

  • Visual Studio Code をインストール済みであること
  • Rancher Desktop が稼働していること

今回、Windows 11のWSL上で実行しました。WSLのインストールについてはこちらをご参照ください。

インストール

インストールはzipファイルを解凍する方法で行いました。zipファイルを解凍後、以下で説明する設定に関するファイルを編集します。

各ファイルの説明

1) _settings.yaml

ターゲットとなるElasticsearchのアクセス情報を定義します(<== をつけた行)

config/index名/_settings.yaml

例 config/idx/_settings.yaml
---
name: "idx"  <== index名
fs:
  url: "/tmp/es"
  update_rate: "15m"
  indexed_chars: 100%
  excludes:
  - "*/~*"
  json_support: false
  filename_as_id: false
  add_filesize: true
  remove_deleted: true
  add_as_inner_object: false
  store_source: false
  index_content: true
  attributes_support: false
  raw_metadata: false
  xml_support: false
  index_folders: true
  lang_detect: false
  continue_on_error: true
  ocr:
    language: "eng"
    enabled: true
    pdf_strategy: "ocr_and_text"
  follow_symlinks: false
elasticsearch:
  nodes:
  - url: "https://a.b.c.d:port"  <== 
  username: ""                 <== 
  password: ""                 <== 
  ssl_verification: false 

上の例は、idx という名前のindexの場合の例です。別のindexを作りたい時は、次のようにします。

  • config下に index名 のディレクトリーを作成し、_settings.yamlを作成
  • _settings.yaml内のnameに index名 を設定

例) idx2を作る場合

  • config/idx2 ディレクトリーを作成します。
  • config/idx2/_settings.yaml ファイル内、name: "idx2" と設定します。

2) .env

クロールすべきディレクトリーを DOCUMENTS_DIRECTORY (<== をつけた行)に設定します。

例 .env
FSCRAWLER_VERSION=2.10-SNAPSHOT
FSCRAWLER_PORT=8080
COMPOSE_PROJECT_NAME=fscrawler
DOCUMENTS_DIRECTORY=C:\Users\user01\Downloads\データ  <==

3) docker-compose.yaml

FSCrawlerの対象のindexを指定します。 (<== をつけた行)

command fscrawler <対象index名> --restart --rest

例 docker-compose.yaml
---
version: "2.2"

services:
  fscrawler:
      image: dadoonet/fscrawler:${FSCRAWLER_VERSION}
      container_name: fscrawler
      restart: always
      volumes:
        - ${DOCUMENTS_DIRECTORY}:/tmp/es:ro
        - C:\Users\user01\Downloads\fscrawler-docker-config\config:/root/.fscrawler
        - C:\Users\user01\Downloads\fscrawler-docker-config\logs:/usr/share/fscrawler/logs
      ports:
        - ${FSCRAWLER_PORT}:8080
      command: fscrawler idx --restart --rest  <== "idx"を対象とするindex名で置き換えます。

まとめ: 何かを変更したい時、変更すべきファイル

  1. index名を変更したい時

    • _settings.yaml (その前に config/index名 のディレクトリーを作成します)
    • docker-compose.yaml
  2. ターゲットのElasticsearchを変更したい時

    • _settings.yaml
  3. クロールするドキュメントが格納されているディレクトリーを変更したい時

    • .env

実行

VS Code で、Terminal > New Terminal をクリックし、右下にターミナルを開きます。fscrawler-docker-config ディレクトリーにいることを確認します。
docker compose upを実行します。バックグラウンドで実行したい場合は -d オプションを指定します。

初回実行時に、FSCrawlerコンテナーイメージがダウンロードされます。
実行イメージ:
image.png

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?