Help us understand the problem. What is going on with this article?

Elasticsearch 7.2.0 + Kuromoji + Kibana + docker-compose インストールメモ

More than 1 year has passed since last update.

SnapDishの検索エンジンを強化したいので、Elsasticsearch準備したときのメモ。
kibana.ymlの書き方でまよったけど、なんとか動くようになった。

サーバー環境

Console
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.1 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.1 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

$ docker-compose -v
docker-compose version 1.22.0, build f46880fe

$ grep vm.max_map_count /etc/sysctl.conf
vm.max_map_count=262144

ディレクトリ構成

Console
/opt/elasticsearch/
├── docker-compose.yml
├── esdata01  # *1
├── esdata02  # *1
├── kibana.yml
├── test_kuromoji_index.sh
└── source
    └── Dockerfile

*1 elasticsearchのデータの保存先、ディレクトリ権限がrootだとエラーになる

ファイル

docker-compose.yml
version: '2.2'
services:
  kibana:
    image: docker.elastic.co/kibana/kibana:7.2.0
    volumes:
      - /opt/elasticsearch/kibana.yml:/usr/share/kibana/config/kibana.yml
    ports:
      - 5601:5601
    networks:
      - esnet
  es01:
    build: source
    container_name: es01
    environment:
      - node.name=es01
      - discovery.seed_hosts=es02
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /opt/elasticsearch/esdata01:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    networks:
      - esnet
  es02:
    build: source
    container_name: es02
    environment:
      - node.name=es02
      - discovery.seed_hosts=es01
      - cluster.initial_master_nodes=es01,es02
      - cluster.name=docker-cluster
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65536
        hard: 65536
    volumes:
      - /opt/elasticsearch/esdata02:/usr/share/elasticsearch/data
    networks:
      - esnet

volumes:
  esdata01:
    driver: local
  esdata02:
    driver: local

networks:
  esnet:
kibana.yml
elasticsearch.hosts:
  - http://es01:9200
  - http://es02:9200
server.name: "[kibanaのドメイン名.com]"
server.port: 5601
server.host: "0.0.0.0"
plugin/Dockerfile
FROM docker.elastic.co/elasticsearch/elasticsearch:7.2.0
# RUN elasticsearch-plugin remove analysis-kuromoji
# RUN elasticsearch-plugin remove analysis-icu
RUN elasticsearch-plugin install analysis-kuromoji
RUN elasticsearch-plugin install analysis-icu
test_kuromoji_index.sh
curl -XPUT -H 'Content-Type: application/json' http://localhost:9200/test_kuromoji_index?pretty -d '
{
  "settings": {
    "analysis": {
      "analyzer": {
        "test_kuromoji_analyzer": {
          "type": "custom",
          "tokenizer": "kuromoji_tokenizer"
        }
      }
    }
  }
}'

Docker操作

Console
$ cd /opt/elasticsearch
$ docker-compose build  # ドッカービルド
$ docker-compose up -d  # 起動
$ docker-compose logs -f  # ログを見る
$ docker-compose down  # 停止

参考
https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away