dockerでelasticsearch、kibanaを使える環境を構築してみる


全文検索機能を利用する

業務で使うことがあったので、elasticsearchを勉強しようと思す。今回はdockerで簡単に構築してみました。dockerの使い方などは端折ります。
elasticsearchに投入するデータはwebサービスでランダムで作成したデータですので適宜用意してください。
今回は対象外ですが、前段にelasticsearchにアクセスするAPサーバーを用意し、elasticからデータを取得するようなアプリケーションも公開できたらなーと思ってます。

構成図

周辺のツール

  • postgres
    • elasticsearchに流すデータソース
  • logstash
    • postgresのデータを抽出しelasticsearchにデータを流し込むアプリケーション
  • kibana
    • elasticsearchにモニタリングするアプリケーション

資材

下記からcloneしてください。
github

docker-compose.yml
version: '2'
services:
  postgres:
    # 配下のinit_dataが初期データ。適宜用意してください。
    build: ./postgres
    ports:
      - 5432:5432
    environment:
      - POSTGRES_USER=postgres
    volumes:
      - ./postgres/data:/var/lib/postgresql/data
      - ./postgres/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
    container_name: postgres
  elasticsearch:
    build: ./elasticsearch
    ports:
      - "9200:9200"
      - "9300:9300"
    container_name: elasticsearch
    hostname: elasticsearch
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
      - "http.host=0.0.0.0"
      - "transport.host=127.0.0.1"
      - "xpack.security.enabled=false"
  kibana:
    # image: docker.elastic.co/kibana/kibana:7.0.1
    build: ./kibana
    ports:
      - "5601:5601"
    container_name: kibana
    links: 
      - elasticsearch
  logstash:
    image: logstash:7.0.1 
    volumes:
      - ./logstash:/usr/share/logstash/pipeline
      - ./jdbc/postgresql-42.2.2.jar:/usr/share/java/postgresql-42.2.2.jar
    links:
      - elasticsearch
      - postgres
    ports:
      - '5044:5044'
      - '43448:43448/udp'
      - '9600:9600'

kibanaの起動確認

docker-composeで起動後ブラウザで下記にアクセスするとkibanaが開く
http://<ホスト名>:5601

その後、左側のメニューの「Dev Tools」を押下。

この画面でクエリの確認ができます。