全文検索機能を利用する
業務で使うことがあったので、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」を押下。
この画面でクエリの確認ができます。