Opensearchpyを使ってAWS OpenSearchサービスにデータを送り、discoverで見れる状態にする手順書

## 記事の目的
- opensearchpyを使ってAWSのOpenSearchサービスへデータを送る作業に手間取ったので、備忘録として手順書を残します。
- 公式ドキュメントを参考に試行錯誤することがあったので、同じような初心者の方の助けになったら良きです。

## 記事の特徴
- これの続編。今回は手元のPCにあるデータをダッシュボード側へ送り、discoverで表示するところまでします。

https://qiita.com/aosan_qiita/items/73a1bb29aa39622d7a1c



opensearchpyを入れてなければ、pipを使って入れておきます。
```
pip install opensearch-py
```


try_connect.pyを使って、opensearch側へデータを送ります。
いくつかのドキュメントを参考に書いています。

https://github.com/opensearch-project/opensearch-py/blob/main/USER_GUIDE.md

https://opensearch.org/docs/latest/clients/python-high-level/


```python:try_connect.py
from opensearchpy import OpenSearch

host = "search-qiita-opensearch-wcc7qcw5raxveihyzamagjtsou.ap-northeast-1.es.amazonaws.com"
port = 443

auth = ("master", "Master@2023")

client = OpenSearch(
    hosts = [{'host': host, 'port': port}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    ssl_assert_hostname = False,
    ssl_show_warn = False,
)

index_name = "classmates"
data = {
  "Name":"Bob",
  "Age":21,
  "Sex":"m"
}

response = client.index(index_name, body=data)
```

authの値は、ドメイン作成時に設定したマスターユーザのユーザ名とパスワードを代入します。
hostの値は、ドメインエンドポイントを参考にして代入します。
![09_きめ細かな.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/81e43290-7e8f-8627-c7fd-23dc64368fbf.png)
![99_ドメインエンドポイント.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/811596a1-c10a-2eda-9fac-0bf66a4c048d.png)




実行！
![100_try_connectの実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/e40b2d85-33eb-8156-2e35-5b142ffd78e8.png)



画像の赤枠に注意しながら、ダッシュボード側で作業を進めます。
![98_StackManagement選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/f18b7f1d-13ae-2514-e48a-c2bb6afda42a.png)
![97_indexPatterns選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/70ec0f82-e87a-1233-cd69-6155e926c07a.png)
![96_CreateIndexPatterns1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/66380093-a19d-9724-73f9-9896a34280b5.png)
![95_CreateIndexPatterns2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/7b214841-ab06-6a62-3369-1963b5aff929.png)
![94_CreateIndexPatterns3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/8bc55079-d343-302d-ecdb-f32c13287668.png)

ここまでの作業を行うと、ダッシュボード側で送信したデータを見れる準備が整います。
あとはDiscoverで確認！
![93_Discover選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/5fcd5716-8b0b-29ae-02d2-dc76ae9114dc.png)

終わり！！
![92_Discover成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/a66e7c6a-37ef-4645-2c1f-1c6eeaaffe64.png)


## 補足

try_connect.pyをもう一度実行すると追記されます。
（分かりやすいように、NameをAliceに変えました。）

```python:try_connect.py
from opensearchpy import OpenSearch

host = "search-qiita-opensearch-wcc7qcw5raxveihyzamagjtsou.ap-northeast-1.es.amazonaws.com"
port = 443

auth = ("master", "Master@2023")

client = OpenSearch(
    hosts = [{'host': host, 'port': port}],
    http_auth = auth,
    use_ssl = True,
    verify_certs = True,
    ssl_assert_hostname = False,
    ssl_show_warn = False,
)

index_name = "classmates"
data = {
  "Name":"Alice",
  "Age":21,
  "Sex":"f"
}

response = client.index(index_name, body=data)
```

実行！
![100_try_connectの実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/b2a7d226-ee23-b5f3-d38c-b8a44c9b16fb.png)
![91_Discover成功_追記.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659578/bd7c1228-8de2-1395-0c9e-a928d459e705.png)