概要
Amazon Elasticsearch Service Domainって何?
Amazon Elasticsearch Service ドメインは、Amazon Elasticsearch Service コンソール、CLI、 または API を使用して作成する Elasticsearch クラスターです。 各ドメインは、指定した コンピューティング リソースおよびストレージリソースを備えたクラウド内の Elasticsearch クラスターとなります。 お客様はドメインの作成や削除、インフラストラクチャ属性の定義、アクセスやセキュリティの制御が可能です。 Amazon Elasticsearch Service ドメインは 1 つまたは複数実行できます。
- つまりこれ
「Elasticsearch Service domain」は、Elasticsearchクラスターの実行に必要なすべてのリソースのコレクションです。
環境構築
- terraformでAmazon Elasticsearch Serviceを構築
- Elasticsearch触るだけならローカルでコンテナ動かしてもよかったかもしれない
- 上記つぶやいたら本業の人からコメントもらえた!
よく考えたらElasticsearch触るだけならAWS使わなくてもコンテナでいいな
— 𝔈𝔩𝔞𝔰𝔱𝔦𝔠 𝔎𝔞𝔧𝔦 𝔖𝔢𝔯𝔳𝔦𝔠𝔢@魔人ママチャリライダー (@Anorlondo448) 2018年9月19日- Javaが動く環境でtgz解凍→bin/elasticsearchで起動できる
- 軽量で良いらしい・・・!
データ登録・検索
- RESTで可能
- 登録
- /blogs/article/1
- 「blogs」というインデックスに
- 「article」というドキュメントを登録する
- 「1」「2」「3」は、登録された個々のドキュメントのID
- /blogs/article/1
curl -H "Content-Type: application/json" -XPUT https://[es domain]/blogs/article/1 -d ' { "title": "Title First", "content": "I ate a ramen", "tags": ["dev", "calory", "Sugar"] } ' curl -H "Content-Type: application/json" -XPUT https://[es domain]/blogs/article/2 -d ' { "title": "Title Second", "content": "I brunk a beer", "tags": ["dev", "alcohol", "purintai"] } ' curl -H "Content-Type: application/json" -XPUT https://[es domain]/blogs/article/3 -d ' { "title": "Title Third", "content": "I go to bed", "tags": ["off", "sleep", "heeling"] } '
- データ取得
- 「content」フィールドが「beer」
$ curl -XGET https://[es domain]/_search?q=content:beer { "title": "Title Second", "content": "I brunk a beer", "tags": ["dev", "alcohol", "purintai"] } }]}}
- インデックス削除
- 一発でINDEXごと消せるのちょっと怖い
$ curl -XDELETE https://[es domain]/blogs
mappingとは
- RDBでいうテーブル定義
- データの型によって自動でmappingしてくれる
- 検索の要件によっては、自動でmappingしないで手動でやる
- INDEXに既にデータが入っている場合、mappingの変更はできない
- Updating existing field mappings
- フィールドの追加はできる
変更したい場合はaliasを使って、既存のmappingから新しいmapping定義に移行させる方法を取る
mapping取得
curl -XGET https://[es domain]/blogs/_mapping { "blogs": { "mappings": { "article": { "properties": { "content": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "tags": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } }, "title": { "type": "text", "fields": { "keyword": { "type": "keyword", "ignore_above": 256 } } } } } } } }
indexオプション
- 指定なしの場合は
analyzed
が適用(解析する) not_analyzed
の場合、解析しない
analyzerオプション
- データ解析してくれて、検索に使う
- 形態素解析とか
- Standard Analyzer
わかったこと
- Amazon Elasticsearch Serviceの「domain」はElasticsearchクラスターの実行に必要なすべてのリソースのコレクション
- 登録/検索がRESTで簡単にできるの素晴らしい
- 自動でmappingしてくれる
- フィールドの形態素解析とかやってくれるのとても便利
- 以下2つから、マスターデータは別途持っておいたほうが良さそう
- Elasticsearchのmapping変更はできない。aliasを使って新しいmappingに移行する
curl -XDELETE
でINDEXごと消える。