Elasticsearchをダウンロードしローカルで実行する (Mac)



# Get Elasticsearch & Kibana

以下からElasticsearch, Kibanaをダウンロードする

[Get Started with Elasticsearch, Kibana, and the Elastic Stack | Elastic](https://www.elastic.co/jp/start?ultron=EL-B-Stack-Trials-APJ-JP-BMM&gambit=Elasticsearch-Core&blade=adwords-s&thor=%2Belasticsearch&gclid=CjwKCAjwiOv7BRBREiwAXHbv3Ks4bjyegJUStKN8NbcalbUu6XIbK0lBUVR9XvKTzfKtJ56Y-iu89hoC_VcQAvD_BwE)

![スクリーンショット 2020-10-06 12.56.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/c4084a94-0fe8-45e8-7a74-5da3ec49df5f.png "スクリーンショット 2020-10-06 12.56.25.png")


## elasticsearch.yml

elasticsearch-7.9.2/config/elasticsearch.yml

### データ保存領域の変更

扱いやすいように、データ保存領域の変更を行う

ここでは`/Users/your name/Elasticsearch/local/data/`配下に作成した

```
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /Users/your name/Elasticsearch/local/data/data
#
# Path to log files:
#
path.logs: /Users/your name/Elasticsearch/local/data/logs
#
```



## プラグインの追加


kuromojiの追加

```
$ bin/elasticsearch-plugin install analysis-kuromoji
-> Installing analysis-kuromoji
-> Downloading analysis-kuromoji from elastic
[=================================================] 100%   
-> Installed analysis-kuromoji
```

icuの追加

```
$ bin/elasticsearch-plugin install analysis-icu
-> Installing analysis-icu
-> Downloading analysis-icu from elastic
[=================================================] 100%   
-> Installed analysis-icu
```



# 実行


elasticsearchのフォルダへ移動して

```
bin/elasticsearch
```



kibanaのフォルダへ移動して

```
bin/kibana
```




# Open Kibana

以下のURLへアクセスする

```
http://localhost:5601
```

![スクリーンショット 2020-10-06 13.09.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/5072cff3-4d57-422b-c8d9-34006ade8003.png "スクリーンショット 2020-10-06 13.09.14.png")



# サンプルデータの登録

`Try our sample data`ボタンを押す

![スクリーンショット 2020-10-06 13.11.42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/b80344fd-9c9e-077a-9129-19ca40eb37f2.png "スクリーンショット 2020-10-06 13.11.42.png")

試してみたいデータをポチッと`Add data`ボタンを押す
ここではSample web logsを入れてみた


<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/79862233-1627-f7d4-1f39-428aa06a68f3.png' height='300px'>


データ追加が終わるとボタンが`View data`に変わるのでおす
dashboardを表示してみる

<img src='https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/a1bf49c8-bdd4-05d6-a560-36c4f48a6210.png' height='300px'>


いい感じにダッシュボードが表示されました。

![スクリーンショット 2020-10-06 13.14.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/926f3db0-d323-659e-1bb6-3664f86a7054.png "スクリーンショット 2020-10-06 13.14.58.png")



# データの登録

Githubにあるサンプルデータを使います
[CraigKelly/steam-data: A simple data project for Steam data](https://github.com/CraigKelly/steam-data)

以下からサンプルデータをダウンロードします。
https://s3.amazonaws.com/public-service/steam-data.tar.gz



詳しい説明は[ここにも書いてあります](https://www.elastic.co/jp/blog/importing-csv-and-log-data-into-elasticsearch-with-file-data-visualizer)


Kibanaメニューの[Machine Learning > データビジュアライザー]

![スクリーンショット 2020-10-06 14.34.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/849ceaa5-3dc5-a204-2f5e-559ea88c4957.png "スクリーンショット 2020-10-06 14.34.14.png")


先ほどダウンロードしたファイルの中の`games-features.csv`を入れます。


![スクリーンショット 2020-10-06 14.33.41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/87788592-e066-7a55-7d9b-e63d7ba5a9b6.png "スクリーンショット 2020-10-06 14.33.41.png")


データが読み込まれてヘッダー行が解析されます。データも中身が解析されておおよその型が類推されます。



![スクリーンショット 2020-10-06 14.34.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/bc05a85f-0f58-df2e-1ba0-96300a28228e.png "スクリーンショット 2020-10-06 14.34.49.png")


名前を変えたい場合にはOverride settingsを押します。


![スクリーンショット 2020-10-06 16.51.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/fafbfb63-6437-29a8-9ee2-85a698a2706d.png "スクリーンショット 2020-10-06 16.51.50.png")


元データに空の列が入っている場合には、（games-features.csvには空列が紛れてますのでチェックが必要です）
「Should trim fields」にチェックを入れます。


ひとしきり眺めたら、importボタンをポチッと押します。

## Import data 
 今回は`_id`を自動作成ではなくて、データ中のResponseIDを`_id` として使いたいので、Ingest pipelineに設定を追加します。

Ingest pipelineの下部の方、remove: field　の下に _idのsetを追加します。


```
,
{
  "set" : {
    "field" : "_id",
    "value" : "{{ResponseID}}"
  }
}
```

![スクリーンショット 2020-10-06 17.13.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/8b72cb02-a7d2-04ee-d6fa-ff089848cc3b.png "スクリーンショット 2020-10-06 17.13.26.png")


importボタンをポチッと押します。

![スクリーンショット 2020-10-06 17.14.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/32eef969-455b-4845-2c08-24334f4bb4d8.png "スクリーンショット 2020-10-06 17.14.09.png")



しばらく待つと取り込まれます。

![スクリーンショット 2020-10-06 17.15.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/a347952b-4c8b-a9a0-b424-fa2d78b351db.png "スクリーンショット 2020-10-06 17.15.11.png")



### discover

discoverで見るとデータが取り込まれています。

![スクリーンショット 2020-10-06 17.16.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49910/cce0b3d6-c750-9f68-c2d0-929cc4757843.png "スクリーンショット 2020-10-06 17.16.36.png")


# 認証の追加

### 認証の有効化

elasticsearch.ymlに以下を追加

```:elasticsearch.yml
xpack.security.enabled: true
```



### パスワードの設定

elasticsearch-setup-passwords でパスワードを設定する

```
$ sudo bin/elasticsearch-setup-passwords interactive
```

result

```
Initiating the setup of passwords for reserved users elastic,apm_system,kibana,kibana_system,logstash_system,beats_system,remote_monitoring_user.
You will be prompted to enter passwords as the process progresses.
Please confirm that you would like to continue [y/N]y


Enter password for [elastic]: 
Reenter password for [elastic]: 
Enter password for [apm_system]: 
Reenter password for [apm_system]: 
Enter password for [kibana_system]: 
Reenter password for [kibana_system]: 
Enter password for [logstash_system]: 
Reenter password for [logstash_system]: 
Enter password for [beats_system]: 
Reenter password for [beats_system]: 
Enter password for [remote_monitoring_user]: 
Reenter password for [remote_monitoring_user]: 
Changed password for user [apm_system]
Changed password for user [kibana_system]
Changed password for user [kibana]
Changed password for user [logstash_system]
Changed password for user [beats_system]
Changed password for user [remote_monitoring_user]
Changed password for user [elastic]
```

それぞれのユーザーに対してパスワードを設定していく

## kibana設定

kibana.ymlに以下を追加する

```
elasticsearch.username: "kibana_system"
elasticsearch.password: "password"
```


[Elasticsearchの認証ユーザーを構築前に事前登録する. 今月は新型コロナの影響で、ずっと在宅勤務してました。 | by Taisuke Hinata | hinatades | Medium](https://medium.com/hinatades/basic%E8%AA%8D%E8%A8%BC%E4%BB%98%E3%81%8Delasticsearch%E3%82%92%E8%87%AA%E5%8B%95%E6%A7%8B%E7%AF%89%E3%81%99%E3%82%8B-27aa22a4754)