はじめに
みなさんこんにちは,
昨今のWebサービスでは,
以前からも,
現在では,
Luceneという全文検索エンジン
- ※)
- 全文検索エンジンとは,
大量にある文書の中から目的のワードを持つ文書を検索するための検索エンジンです。
Elasticsearchの特徴
Elasticsearchの最大の特徴として,
- クラスタ
- REST API
- スケーラブルで柔軟な設計
- クラスタ構成が前提で実装されているため,
同一のクラスタ名で用意するだけでレプリカが自動で実行されます。また, データのマッピングを定義せずにデータの投入が可能なため, 蓄積した後に利用したい形に変更することが可能です。 - REST-API
- 設定ファイルも利用可能ですが,
RESTインターフェースですべての入出力が可能です。HTTPで接続可能なので開発環境を選びません。
上記の特徴以外にも,
RDBMSとの対比
OracleやPostgreSQLなどのRDBMSとElasticsearchの違いはどこにあるのでしょうか。
データを蓄積するものとデータを取り出すものという思想の違いがありますが,
たとえば,
- 駅から1km以内
- 2階以上
- 10万円以内
RDBMSでこのQueryを流した場合,
上記のようにデータの取り扱いも違いますが,
Node = DBインスタンス
Cluster = Databaseクラスター
Index = Databaseスキーマ
Mapping Type = Table
検索結果の関連度
検索結果では,
Elasticsearchの関連度にはスコアというものが設定されています。1ワードの検索ではこのスコアの算出にはTF/
たとえば,Elasticsearch
というワードを検索するクエリを流したとします。
この考えでは文書と検索ワードの関連度は,