OpenSearch でいろいろやってみる ～インストール編～

# インストール編
OpenSearchを触ってみた個人的メモ代わりです。

1. OpenSearch でいろいろやってみる ～インストール編～ (👈ココ)
2. [OpenSearch でいろいろやってみる ～インデックス編～](https://qiita.com/hwatry/items/e67282b855cc8848d455)
3. [OpenSearch でいろいろやってみる ～絞り込み編～](https://qiita.com/hwatry/items/09b577418495f27ac158)
4. OpenSearch でいろいろやってみる ～Aggregation編～

## はじめに

近々 OpenSearch 触ることになりそうだったので、
予習の記録として、またこれから OpenSearch 触る人の手助けになればと残すことに。

## OpenSearch って

数年前に ElasticSearch(ES)を使ったプロダクトに関わっていた。
その後 AWS にマネージドな ES あるよなーぐらいでしか意識していなかったが、
最近、ES のオープンソースフォークである OpenSearch(OS)に看板がかわったらしい。

## ローカルに建ててみる

もちろん AWS 使ってもいいんだけれど、
いろいろ実験したりするならローカルでサクッと試したいなと。
今回は Windows WSL2 環境の Docker で動かしたい。
素直にDoker Desktop使っても同様にできると思われ。
WSL 及び Docker 周りは [こちら](https://blog.ecbeing.tech/entry/2021/09/07/150000) を参考に作っていた。
OS の DockerFile、docker-compose.yml は [オフィシャル](https://opensearch.org/docs/latest/opensearch/install/docker/) でも情報出してるし、
日本語なら [こちら](https://dev.classmethod.jp/articles/how-to-build-opensearch-with-docker/) が非常に参考になった。

```json:DockerFile
FROM opensearchproject/opensearch:1.1.0
RUN /usr/share/opensearch/bin/opensearch-plugin install analysis-kuromoji
RUN /usr/share/opensearch/bin/opensearch-plugin install analysis-icu
```
```json:docker-compose.yml
version: "3"

services:
  opensearch-dashboards:
    image: opensearchproject/opensearch-dashboards:1.0.1
    container_name: opensearch-dashboards
    environment:
      OPENSEARCH_HOSTS: "https://opensearch:9200"
    ports:
      - 5601:5601
    links:
      - opensearch
    networks:
      - sandbox

  opensearch:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: opensearch
    environment:
      - cluster.name=docker-cluster
      - node.name=os-node
      - cluster.initial_master_nodes=os-node
      - bootstrap.memory_lock=true
      - http.host=0.0.0.0
      - transport.host=127.0.0.1
      - "OPENSEARCH_JAVA_OPTS=-Xms512m -Xmx512m"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - $PWD/.local/opensearch:/usr/share/opensearch/data
    ports:
      - 9200:9200
    networks:
      - sandbox

networks:
  sandbox:
```

まるっきり上記参考ページのコピペ。

そして

```shell
docker-compose up
```

。。。。動かん。
確認すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531310/fab19deb-c08f-3908-5aec-38c761fa7e29.png)
なんか Permission っぽいエラーが。

valume 作る時の所有者がコンテナ側とホスト側でちがうとか、なんかそんな感じの時に起こることらしい。
ディレクトリ自体は作られてたんで、下記で辻褄あわせてみた。

```shell
 sudo chown -R 1000:1000 .local/opensearch
```

すると。。。
動いた模様。
厳密には手順があるんだろうが、今回はローカルで実験するだけなんでこれで良しとする。

### ダッシュボード触ってみる

ダッシュボード ([http://localhost:5601/](http://localhost:5601/)) に行ってみる。
user/pass は admin/admin
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531310/df4a863b-234a-3d2d-9745-b88932dc33a8.png)


サンプルデータが選べたりする。とりえず ecommerce のやつにしてみる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531310/b621277a-d952-913e-3b8a-7a49c0000929.png)


数秒でインデックスされ、とたんに kibana っぽい画面が！すごいすごい。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531310/36b92489-e7db-b993-de3a-942e0e81adb5.png)

任意のリクエストは「Dev Tool」で叩くことが可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/531310/53384d7b-ddc5-c0a6-1226-b10d8ac3fd49.png)
所謂「実験」として使うのはこの画面がメインになりそう。

Rest で動作するので curl でも叩ける。たとえば、

```shell
curl -XPOST https://localhost:9200/opensearch_dashboards_sample_data_ecommerce/_search -u 'admin:admin' --insecure -d '{"size":5}' -H "Content-Type: application/json"
```

と、まぁなんとなく動かせるところまできて今回はここまで。

次はインデックス作成周り、やっていこうかなと。