---
# System prepended metadata

title: '今週何知った？ week:22'

---

# 今週何知った？ week:22

## 各自発表


> [name=ken3ypa]

## Elastic社の歴史とバージョニング、そしてES7移行の注意点について

### 概要
- ES8が最新らしいが、今触っているバージョンは6、そして7にあげようとしている
 - ざっくりとした歴史とバージョンごとの差異を見ていくことで今やっている箇所に対する知識を深めたい

### 1. 歴史

> Elasticの歴史は、2000年にShay Banonが個人開発を通じて検索基盤（全文検索）に関するオープンソースを公開したこと始まる。開発者のBanonの妻が料理学校に通っており、膨大なレシピを検索するために、個人開発を進めたのがきっかけであった。このオープンソース開発を通じて、Elasticsearchがリリースされた。

|year|event|
| --- | --- |
|2000年|レシピ検索のオープンソースを公開|
|2012年|Elasticの法人化とともにKibanaとLogdashを取得|
|2015年|AWSにElasticsearchの提供を開始|
|2018年|ニューヨーク証券取引所に株式上場|

- [Elasticの歴史 - The社史](https://the-shashi.com/tse/tech-elastic/)
- [Elasticsearch普及のカギは「365日グッドリスナーであること」生みの親Shay Banon氏の開発哲学 - エンジニアtype | 転職type](https://type.jp/et/feature/5701/)

### 2. バージョニング
[ElasticプロダクトのEOL/サポート終了日 | Elastic](https://www.elastic.co/jp/support/eol)
> メジャーバージョン（例：1.0.0、2.0.0、5.0.0、6.0.0、7.0.0）では新機能が登場し、また後方互換性が失われます。マイナーバージョン（例：7.1.0、7.2.0）では新機能が登場します。メンテナンスリリース（例：7.1.1、7.1.2）はバグ修正のみのリリースです

- :thinking: :thought_balloon: バージョン3, 4 はどこいった…？
- バージョン5をリリースする際に kibana のバージョニングと合わせるようにしたとのこと
    - https://speakerdeck.com/elastic/elastic-on-16-opening-keynote?slide=69
    - https://www.elastic.co/jp/elasticon/conf/2016/sf/opening-keynote
- 現在の最新バージョンは8.2.3（ [Elasticsearch version 8.2.3 | Elasticsearch Guide [8.2] | Elastic](https://www.elastic.co/guide/en/elasticsearch/reference/8.2/release-notes-8.2.3.html)）

### 3. Elasticsearch6 => 7
- 色んな変更はあれども、一番はタイプレス化の推進

#### 4. タイプレス化とバッドアナロジーの話

よくある（あった）RDBと比較してElasticsearchのデータ構造を語る場合の説明

|RDB|Elasticsearch|
| --- | --- |
| データベース|インデックス|
|テーブル|タイプ|
|カラム|フィールド|
|レコード|ドキュメント|

- Database -> Table -> Column
- Index -> Type -> Document

のような成り立ちだと説明される。しかし、7系からは本腰を入れてタイプレスの方向に向かっている。これは上記のアナロジーでは、RDBにおけるテーブルが消滅するようなもの。

#### なぜタイプレス化に向かっている？

> Elasticではバージョン5.0よりElasticsearchのタイプ廃止に向けて取り組んできました。そして7.0より、タイプは完全に廃止されます。タイプはこれまで単インデックス内でマルチテナンシーを実現する目的で設けられていましたが、Luceneとの互換性がありませんでした。このため、メリットを上回る数々の問題を生じさせている事実が明らかになっていました。 いくつかの回避策（たとえばタイプごとに固有のフィールドを使用するとか、内部では1つのタイプに対し1つのインデックスしか持たせないなど）も長く議論されてきましたが、最終的にタイプへのサポート自体を廃止するという結論に至りました。ユーザーが移行作業をスムーズに行えるよう、この変更は4つのメジャーバージョンで段階的に提供されます。

|バージョン|typeについて|
| --- |---|
| 5.0|複数のタイプにわたって同じ名前を共有するフィールド同士に対し、強制的に互換性マッピングを持たせます|
|6.0|複数のタイプを備える新規のインデックスを作成できなくなり、_default_マッピングが廃止されます|
|7.0|タイプを受け入れるAPIを廃止し、新たにタイプレスAPIを導入するほか、_default_マッピングをサポート対象外とします|
|8.0|タイプに対応するAPIを削除します|


> [name=makicamel]

[action_args](https://github.com/asakusarb/action_args) を読んでいる

## メモ欄
