プログラミングなんてわからないんですけど〜

元プログラマによるプライベートでのプログラミング日記。1/3のつもりだけどソフト関連はここがメイン

ラズパイ4のUbuntu Server20.04(64-bit)にElasticsearchをインストールする

aarch64用はapt-getでするほうでは入りません。いつも間違えてしまいます。

www.elastic.co

まず、openjdkをインストールします。

sudo apt update && sudo apt install openjdk-13-jdk

たぶん13で大丈夫だと思う。あとで設定ファイルを変更するけど。

私が持っているラズパイ4は8GB版なので、jvmのメモリ設定は1GBでそのままにしています。

sudo systemctl start elasticsearch

をするとエラーになります。

sudo journalctl -xe -u elasticsearch

で見るとこういう表示があります。

(中略): Unrecognized VM option 'UseAVX=2'

AVX命令なんてないと思うので、jvm.optionsの該当行をコメントアウトします。

/etc/elasticsearch/jvm.options

(中略)
#10-:-XX:UseAVX=2

これでもう一度restartすると別のエラーが。このエラーが出るのに30秒くらいはかかりますので少し待ちます。

(中略): elasticsearch.service: Failed with result 'exit-code'.

よくわからんですね。なのでlogを見ましょう。

tail -n 30 /var/log/elasticsearch/elasticsearch.log

/var/log/elasticsearch/elasticsearch.log

org.elasticsearch.bootstrap.StartupException: ElasticsearchException[X-Pack is not supported and Machine Learning is not available for [linux-aarch64]; you can use the other X-Pack features (unsupported) by setting xpack.ml.enabled: false in elasticsearch.yml]

とあります。X-Packが対応していないから無効にするようにということなので、elasticsearch.ymlに設定します。

/etc/elasticsearch/elasticsearch.yml

xpack.ml.enabled: false

これでrestartするとすぐ起動します。elasticsearch.logに「no plugins loaded」とか出ていれば起動しているはずです。起動確認はcurlで。

curl 127.0.0.1:9200

こんな風なのが出力されればOKです。

{
  "name" : "KvBmtDv",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "YW9vyXsBS_Cby7Z07T6wXw",
  "version" : {
    "number" : "6.8.9",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "be2c7bf",
    "build_date" : "2020-05-04T17:00:34.323820Z",
    "build_snapshot" : false,
    "lucene_version" : "7.7.3",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

あとは、お好みに応じてプラグインを入れていきましょう。