🔍

Docker ComposeでElasticsearch + Sudachiの環境を構築する (2022/08版)

2021/05/21に公開

概要

この記事では、全文検索エンジンElasticsearchに形態素解析器Sudachiを利用する環境をDocker Composeで簡単に構築する方法を説明します。

こうした記事はウェブ上で多く書かれておりますが、バージョンや設定が古くなっていたりとそのままでは動かなくなっているため、現時点での構築事例ということでアップデートを行いたいと思います。当然ながら本記事も古くなっていくものと思われますので、2021/05 2022/08時点での最新という点に留意ください。

(追記 2022/08/23) バージョンアップを行いました。

  • Elasticsearc: 7.10.17.17.3
  • SudachiDict: sudachi-dictionary-20201223-coresudachi-dictionary-20220729-core

環境

  • Elasticsearch: 7.17.3
  • analysis-sudachi: v2.1.0
  • SudachiDict: sudachi-dictionary-20220729-core

方法

$ git clone https://github.com/yagays/elasticsearch-sudachi
$ cd elasticsearch-sudachi
$ docker compose up --build

コード全体は以下のレポジトリにあります。

yagays/elasticsearch-sudachi

Dockerfileの解説

ここでは、必要となるDockerfileを抜粋して説明します。

FROM docker.elastic.co/elasticsearch/elasticsearch:7.17.3

RUN elasticsearch-plugin install https://github.com/WorksApplications/elasticsearch-sudachi/releases/download/v2.1.0/analysis-sudachi-7.17.3-2.1.0.zip
RUN curl -Lo sudachi-dictionary-20220729-core.zip http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict/sudachi-dictionary-20220729-core.zip && \
    unzip sudachi-dictionary-20220729-core.zip && \
    mkdir -p /usr/share/elasticsearch/config/sudachi/ && \
    mv sudachi-dictionary-20220729/system_core.dic /usr/share/elasticsearch/config/sudachi/ && \
    rm -rf sudachi-dictionary-20220729-core.zip sudachi-dictionary-20220729/

COPY sudachi.json  /usr/share/elasticsearch/config/sudachi/

まずElasticsearchが公式で配布しているコンテナイメージを利用します。次にelasticsearch-pluginを使ってanalysis-sudachiのプラグインのインストールします。一度ダウンロードしてから指定するコードもありましたが、現在はプラグインファイルのURLをそのまま渡すことができます。その後SudachiDictをダウンロードして配置します。以前はconohaでホストされていたようですが、現在ではAWSでホストされているため、URLもそれに応じて書き換えています(link)。また、辞書にはcore,small,fullの3種類があり、ここではcoreを利用しています。最後にsudachiの設定ファイルであるsudachi.jsonをローカルからコピーします。この中で辞書ファイル名を指定しているので、前段でダウンロードした辞書名と統一させます。

差分

参考

Discussion