LoginSignup
17
21

More than 5 years have passed since last update.

Elasticsearch 勉強メモ

Posted at

実践!Elasticsearch をやっていた時の勉強メモが残っていたので公開しておきます。

基礎

Indexフェーズ

ドキュメントの解析

Analysis

Full Text -> Termsにする作業。
日本語だと形態素解析に当たる重要な部分。

解析の流れ:
CharFilters(複数) -> Tokenizer(1つ) -> TokenFilter(複数)

TokenFilterではストップワードを除いたりもできる

ドキュメントの追加削除、取得など

Document API

Index Module

Index Module

Searchフェーズ

フィルター

Filter

検索をYes/Noの2値や日付やGeoLocation、キーワードの一致などExact Machの検索を行うときは以下のQueryではなくFilterを使う。
また、Queryと異なりキャッシュすることができる。

クエリ

Query

全文検索を行い、適合度によりランク付けしたいときには上のFilterではなくQueryを使う。

検索関連機能

Search APIs

  • uri search
    • GETで簡単に検索する
  • request body search
    • POSTで色々設定して検索できる
  • facets
    • 検索を元に統計的な分析ができる
  • suggesters
  • multi search api
    • 複数クエリを同時に投げられる
  • count api
    • 検索結果の数を返してくれる
  • validate api
    • 検索結果を返さずに、その検索をしてエラーが出ないかどうかだけを返してくれる
  • explain api
    • デバッグ用にスコアリングの説明を出してくれる
  • percolate api
    • よくわからん。TwitterのTimeLine検索みたいなのを作りたいときに使える??
  • more like this api

ElasticSearchのスコアリング

INDEX時

Mappingの_boostフィールド

この方法では、Index時に、あるフィールドやドキュメントのスコアをブーストしておくことができる。例としてはPageRankのストアに使える。

検索時

Similarity Module

FullTextSearchにおけるクエリとドキュメントの適合度を求めるモジュール

Constant Score Query

return 0.5 if match

Boosting Query

return 0.5 * original_score if match

Function Score Query

return 0.5 * original_score + freshness_score if match

Functionを書くときに使える言語の解説:

Index Boost

2つのIndexの重み付けを定義できる

Rescoreing

より計算コストの高いスコアリングをTop100-500などのドキュメントに対して行うときに使う

参考

17
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
21