大変便利な elasticsearch-sudachi (analysis-sudachi) ですが、 2024/1/28 現在ですと Elasticsearch の v7 最新版 7.17.17 に対応したパッケージが提供されていません。
そこで、analysis-sudachi を自前ビルドする Dockerfile を作りました。
README に書かれている
./gradlew -PengineVersion=es:x.x.x build
ですとビルドに失敗したため、
./gradlew -PengineVersion=es:x.x.x build -x integration:test
のように、integration:test
タスクを除いてビルドしています。(なぜこのタスクの除く必要があるのか、わかる方がいたら教えてほしいです)
Dockerfile
# syntax = docker/dockerfile:1 ARG ES_VERSION=7.17.17 ARG SUDACHI_DIC_VERSION=20240109 FROM gradle:8 AS build # Build analysis-sudachi ARG ES_VERSION RUN git clone https://github.com/WorksApplications/elasticsearch-sudachi.git \ && cd elasticsearch-sudachi \ && ./gradlew -PengineVersion=es:$ES_VERSION build -x integration:test FROM elasticsearch:$ES_VERSION # Install anaylsis-icu plugin RUN ./bin/elasticsearch-plugin install analysis-icu # Install analysis-sudachi plugin ARG ES_VERSION COPY --from=build /home/gradle/elasticsearch-sudachi/build/distributions/elasticsearch-$ES_VERSION-analysis-sudachi-*.zip /tmp/analysis-sudachi.zip RUN ./bin/elasticsearch-plugin install file:///tmp/analysis-sudachi.zip \ && rm /tmp/analysis-sudachi.zip # Install sudachi dictionaries ARG SUDACHI_DIC_VERSION RUN curl -O http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict/sudachi-dictionary-$SUDACHI_DIC_VERSION-core.zip \ && curl -O http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict/sudachi-dictionary-$SUDACHI_DIC_VERSION-full.zip \ && unzip sudachi-dictionary-$SUDACHI_DIC_VERSION-core.zip \ && unzip -o sudachi-dictionary-$SUDACHI_DIC_VERSION-full.zip \ && mkdir ./config/sudachi \ && mv sudachi-dictionary-$SUDACHI_DIC_VERSION/*.dic ./config/sudachi/ \ && rm -rf sudachi-dictionary-$SUDACHI_DIC_VERSION*
Dockerfile の書き方については、
が参考になりました。ありがとうございます。