ねこものがたり

いちにちいっぽ

brew installしたElasticsearchの設定を変更する

ゆるゆるとElasticsearch実践ガイドをやっています。具体的に言うと2章に入っていて、手元で自由に使いこなせるようになるまでの道のりでいちいち躓いています。躓いているので備忘録!

設定ファイルの場所

”2-4-4 基本設定”の節で触れられているellasticserach.ymlの中を編集するについて、このファイルは書籍では"/etc/elasticsearch/"以下にあると紹介されていますが、ディレクトリ自体ありませんでした。困った。

$ ls /etc/elasticsearch/
ls: /etc/elasticsearch/: No such file or directory

ではどこにあるか。情報を見てみます。

$  brew info elasticsearch
elasticsearch: stable 6.8.6, HEAD
Distributed search & analytics engine
https://www.elastic.co/products/elasticsearch
Not installed
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/elasticsearch.rb
==> Requirements
Required: java = 1.8==> Options
--HEAD
    Install HEAD version
==> Caveats
Data:    /usr/local/var/lib/elasticsearch/
Logs:    /usr/local/var/log/elasticsearch/elasticsearch_keiko.log
Plugins: /usr/local/var/elasticsearch/plugins/
Config:  /usr/local/etc/elasticsearch/

To have launchd start elasticsearch now and restart at login:
  brew services start elasticsearch
Or, if you don't want/need a background service you can just run:
  elasticsearch
==> Analytics
install: 7,175 (30 days), 21,247 (90 days), 109,009 (365 days)
install-on-request: 6,817 (30 days), 20,248 (90 days), 103,053 (365 days)
build-error: 0 (30 days)

Config: /usr/local/etc/elasticsearch/とあるので、/usr/local/etc/elasticsearch/にありそうです。

/usr/local/etc/elasticsearch/

このディレクトリには以下のファイルがありました。

$ tree /usr/local/etc/elasticsearch/
/usr/local/etc/elasticsearch/
├── elasticsearch.keystore
├── elasticsearch.yml
├── jvm.options
├── log4j2.properties
├── role_mapping.yml
├── roles.yml
├── users
└── users_roles

elasticsearch.ymlを変更する

手始めにクラスターの名前を変えてみます!

- cluster.name: elasticsearch_keiko
+ cluster.name: elasticsearch_neko314

これで再起動して、接続してみます。

# 設定ファイルを変更したら再起動
$ elasticsearch 

# 別ターミナルで操作
$ curl -XGET http://localhost:9200
{
  "name" : "kanekokeikonoMacBook.local",
  "cluster_name" : "elasticsearch_neko314", # 新しい値になっている
  "cluster_uuid" : "NUXBP0TIRYCp9CRmCJgi9Q",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

クラスタ名が変わりました!!! (変更前の内容

設定値を環境変数にする

環境変数も使えるということだったのでやってみました。

# 環境変数の設定
$ set -x ELASTICSEARCH_CLUSTER_NAME elasticsearch_neko
$ env | grep ELASTICSEARCH_CLUSTER_NAME
ELASTICSEARCH_CLUSTER_NAME=elasticsearch_neko


# elasticsearch.yml
- cluster.name: elasticsearch_neko314
+ cluster.name: ${ELASTICSEARCH_CLUSTER_NAME}


# 再起動
$ elasticsearch

# 接続確認
$ curl -XGET http://localhost:9200
{
  "name" : "kanekokeikonoMacBook.local",
  "cluster_name" : "elasticsearch_neko", # 値が環境変数に入れた値になっている
  "cluster_uuid" : "NUXBP0TIRYCp9CRmCJgi9Q",
  "version" : {
    "number" : "7.6.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
    "build_date" : "2020-02-06T00:09:00.449973Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

やったぁ!

以下同様に他の設定についてもお試ししていきたいと思います。