🦆

Elasticsearch 入門(1)

2024/07/20に公開

Elasticsearch 入門(1)

Elasticsearch 8.14 を Mac 上の Docker で動かしてみます。
基本的に、Run Elasticsearch locally in Docker (without security) という手順書の通りにやってみるだけです。

なお、M2 Mac 上で MacOS (Ventura) を使っています。

Decker Desktop の準備

https://www.docker.com/products/docker-desktop/ から Docker Desktop を導入します。(私の場合、Apple Silicon 用のを導入します。)

ダウンロードして Docker.app をインストールします。(起動すると、最初に Docker アカウント作成とか色々あるはず。)

パスワード設定

~/.bash_profile とかに、elasticsearch と kibana のパスワードの設定を下記のように追加して、$ source ~/.bash_profile で設定します。
<ES_PASSWORD> とかのところは各自好きなパスワードを設定して下さい。)

正直、ローカルでしか実行しないのでパスワードは適当で良いのではないかと思います。

export ELASTIC_PASSWORD="<ES_PASSWORD>"  # password for "elastic" username
export KIBANA_PASSWORD="<KIB_PASSWORD>"   # Used _internally_ by Kibana, must be at least 6 characters long

Docker network を作る

下記のコマンドを入力して docker network を作ります。

$ docker network create elastic-net

Elasticsearch 起動

$ docker run -p 127.0.0.1:9200:9200 -d --name elasticsearch --network elastic-net \
  -e ELASTIC_PASSWORD=$ELASTIC_PASSWORD \
  -e "discovery.type=single-node" \
  -e "xpack.security.http.ssl.enabled=false" \
  -e "xpack.license.self_generated.type=trial" \
  docker.elastic.co/elasticsearch/elasticsearch:8.14.3

初回は image 'docker.elastic.co/elasticsearch/elasticsearch:8.14.3' のダウンロードが行われます。

接続確認

curl で localhost:9200 に接続して確認できます。

curl -u elastic:$ELASTIC_PASSWORD \
  -X PUT \
  http://localhost:9200/my-new-index \
  -H 'Content-Type: application/json'
  {"acknowledged":true,"shards_acknowledged":true,"index":"my-new-index"}

python からの接続

$ pip3 install --upgrade pip
$ pip3 install elasticsearch
$ python -V
Python 3.11.5
$ python3
Python 3.11.5 (main, Sep 11 2023, 08:31:25) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> from elasticsearch import Elasticsearch
>>> username = 'elastic'
>>> password = os.getenv('ELASTIC_PASSWORD')
>>> client = Elasticsearch(
...     "http://localhost:9200",
...     basic_auth=(username, password)
... )
>>> print(client.info())
{'name': 'a5de1176c2cf', 'cluster_name': 'docker-cluster', 'cluster_uuid': '4wVgfwAfT0iK1Vi6p5u0iw', 'version': {'number': '8.14.3', 'build_flavor': 'default', 'build_type': 'docker', 'build_hash': 'd55f984299e0e88dee72ebd8255f7ff130859ad0', 'build_date': '2024-07-07T22:04:49.882652950Z', 'build_snapshot': False, 'lucene_version': '9.10.0', 'minimum_wire_compatibility_version': '7.17.0', 'minimum_index_compatibility_version': '7.0.0'}, 'tagline': 'You Know, for Search'}
>>> 

とりあえず接続出来ました。

Discussion