Elasticsearch
アナライザ
サーチ…
備考
アナライザは、文字列フィールドからテキストを取り出し、クエリ時に使用されるトークンを生成します。
アナライザは次の順序で動作します。
-
CharFilters(ゼロ以上) -
Tokenizer(1) -
TokenFilters(ゼロ以上)
アナライザは、フィールドにインデックスが付けられたときに、文字列全体ではなくトークン単位で行われるように、マッピングに適用できます。照会するとき、入力文字列もアナライザーを介して実行されます。したがって、アナライザでテキストを正規化すると、クエリに正規化されていない文字列が含まれていても常に一致します。
マッピング
アナライザは「アナライザ」を使用してマッピングに適用できます。デフォルトでは、「標準」アナライザが使用されています。あるいは、(トークン化や正規化が役に立たないために)アナライザを使用したくない場合は、 "index"を指定することができます: "not_analyzed"
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "my_user_name_analyzer"
},
"id": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
マルチフィールド
場合によっては、異なるアナライザでフィールドの複数の異なるインデックスを持つことが有用な場合もあります。マルチフィールド機能を使用すると、そうすることができます。
PUT my_index
{
"mappings": {
"user": {
"properties": {
"name": {
"type": "string"
"analyzer": "standard",
"fields": {
"special": {
"type": "string",
"analyzer": "my_user_name_analyzer"
},
"unanalyzed": {
"type": "string",
"index": "not_analyzed"
}
}
}
}
}
}
}
クエリを実行する際には、単に "user.name"(この場合はスタンダードアナライザを使用します)を単に使用するのではなく、 "user.name.special"または "user.name.unanalyzed"を使用できます。ドキュメントは変更されずに残ることに注意してください。これは索引付けにのみ影響します。
アナライザ
elasticsearchの分析は、索引のデータを分析したいときにコンテキストになります。
アナライザを使用すると、以下の操作を実行できます。
- 略語
- ステミング
- 入力ミス
私たちは今、それぞれを見ていきます。
略語 :
分析器を使用して、elasticsearchに私たちのデータの略語、すなわちdr => Doctorをどのように扱うかを教えてもらえます。私たちの索引でdoctorキーワードを検索すると、elastsearchはdrで示された結果も返します。
ステミング :
アナライザーでステミングを使用すると、修正された動詞のようなベース・ワードを使用することができます。
ワード 変更 要求する 要件、必須
タイプミス処理 :
アナライザはまた、「Resurrection」という特定の単語を検索しているかどうかを調べている間にタイプミングを行います。それで、elasticsearchはタイプミスの結果を返します。これはresurection、ressurectionを同じように処理し、結果を返します。
ワード 変更 復活 再入院、再入院
弾性検索のアナライザ
標準
シンプル
空白
やめる
キーワード
パターン
言語
スノーボール
ケースアナライザを無視する
場合によっては、ドキュメント内の一致に関して、クエリのケースを無視する必要がある場合があります。この場合、分析中に症例を無視するために分析装置を使用することができる。各フィールドは、このアナライザーをプロパティに含めて、動作させる必要があります:
"settings": {
"analysis": {
"analyzer": {
"case_insensitive": {
"tokenizer": "keyword",
"filter": ["lowercase"]
}
}
}
}