準備ElasticSearchマッピングファイルのためのガイドライン

ためには、正確な値文字列、データの種類を知るために、各ドメインelasticsearchの必要性とみなさ数値、文字列またはテキストフィールドとして、時間ドメイン時間デジタル領域と見なされます。この情報は、マップに含まれています。

データ入出力は、各文書がインデックスであり、説明タイプ各タイプには、独自の持っているマップ、またはスキーマ定義をマッピングは、フィールドタイプ、各フィールドのデータ型を定義する方法、およびこれらElasticsearchドメイン。マッピングタイプは、関連のconfigureメタデータに使用されています。

私たちはしますマッピングを入力し、詳細な地図を議論します。このセクションでは、我々はあなたのエントリの内容をするだけの十分な議論します。

シンプルなコアドメインの種類

Elasticsearchは、次のような単純なドメインの種類をサポートしています。

  • 文字列: string
  • 整数:byteshortintegerlong
  • フロート:floatdouble
  • ブール: boolean
  • 日付: date

ときあなたは、インデックス、新しいドメインを含むドキュメント-の前に現れたことがない- Elasticsearchが使用する動的なマッピングを、JSONの基本的なデータ・タイプで、次のルールを使用し、ドメインの種類を推測してみました:

JSONタイプ

ドメインタイプ

ブール:trueまたはfalse

boolean

整数: 123

long

フロート: 123.45

double

文字列、効力発生日: 2014-09-15

date

文字列: foo bar

string

あなたが(引用符であれば、この手段"123"数値インデックス)、ためにマップされますstring代わりに入力longこのフィールドがマップされている場合は、long、その後、Elasticsearchは変換されない場合は、例外がスローされ、長期に文字列にしようとします。

地図を見ます

/_mapping私たちはインデックスの一つ以上にマップのElasticsearch 1つ以上の種類を見ることができます。章の冒頭、私たちはインデックスを作っているgbタイプにtweetマッピングします:

GET /ギガバイト/ _mapping /つぶやき

私たちの索引付けされたドキュメント、ドメイン(と呼ばれるElasticsearch 属性)動的に生成されたマップを。

{ 
   "GB":{ 
      "マッピング":{ 
         "つぶやき":{ 
            "プロパティ":{ 
               "日付":{ 
                  "タイプ": "日付"、
                  "フォーマット": "strict_date_optional_time || epoch_millis" 
               }、
               "名前": { 
                  "タイプ": "文字列" 
               }、
               "ツイート":{ 
                  "タイプ": "文字列" 
               }、
               "USER_ID":{ 
                  "タイプ": "長いです"
               } 
            } 
         } 
      } 
   } 
}

エラーマッピングは、例えば、ageドメインはにマップstringの代わりに入力しinteger、クエリの結果にリードが不可解に表示されます。

チェックしてください!むしろ、あなたのマップが正しいと仮定するとより。

カスタムドメインマッピング

基本的なフィールドのデータ型が、多くの場合、十分に良いてきていますが、多くの場合、別のドメイン、特に文字列フィールドからのマッピングを定義する必要がありました。カスタムマップを使って次の操作を実行することができます:

  • テキスト文字列フィールドと文字列フィールドの正確な値との差異
  • 特定の言語パーサー
  • 部分一致に対応するために最適化フィールド
  • カスタムデータ形式を指定します。
  • もっとあります

最も重要な属性のドメインですtypeないためにstring、ドメイン、あなたは一般的にのみ設定する必要がありますtype

{ 
    "NUMBER_OF_CLICKS":{ 
        "タイプ": "整数" 
    } 
}

デフォルトでは、stringTypeフィールドは、フルテキストが含まれていると考えられています。つまり、前のインデックスにそれらの値は、この分野でのクエリアナライザの前に、検索の対象となり、パーサ経由となります。

stringドメインマッピングの二つの最も重要な属性indexanalyzer

指数

indexどのようにインデックスの文字列を制御するプロパティ。これは、以下の値の3なることがあります。

analyzed
まず、文字列、および、インデックス、それ。言い換えれば、フルテキストは、このフィールドにインデックスを付けます。
not_analyzed
  インデックスこのフィールドには、検索することができますが、インデックスが正確な値になるように。私たちは、それを分析していません。
no
このフィールドは、インデックスが作成されていません。このドメインは検索されません。

stringドメインindexデフォルトで属性analyzed私たちは正確な値にこのフィールドをマップする場合、我々はそれを設定する必要がありますnot_analyzed

{ 
    "タグ":{ 
        "タイプ": "string"は、
        "インデックス": "not_analyzed" 
    } 
}

その他の単純型(例えばlongdoubledateなど)も受け入れるindexパラメータを、しかし意味のある値のみnonot_analyzed彼らは分析されませんので、。

アナライザ

以下のためanalyzedの文字列フィールド、analyzer検索とインデックスのプロパティで使用されている指定アナライザ。デフォルトでは、Elasticsearchは使用standardパーサをしますが、例えば、それを置き換える組み込みパーサを指定することができwhitespacesimpleそしてenglish

{ 
    "ツイート":{ 
        "タイプ": "string"は、
        "分析": "英語" 
    } 
}

カスタムパーサー、私たちは、カスタム・パーサーを定義し、使用する方法を示します。

更新されたマップ

あなたが最初のインデックスを作成するときには、マッピングのタイプを指定することができます。また、使用することができます/_mappingマッピングを増やす(更新が存在するマップまたはタイプ)新しいタイプを。

あなたがすることができますが増加し、既存のマップを、あなたがすることはできません変更ドメインマッピングが存在します。マッピングは、ドメインがすでに存在する場合、そのデータは、インデックスのドメインであったかもしれません。あなたが意図このフィールドのマッピングを変更する場合は、インデックスデータが間違っている可能性があり、それは通常の検索はできません。

私たちは、新しいドメインを追加するには、マップを更新することができますが、ドメインから存在していないanalyzed変更がnot_analyzed

マッピングを指定する2つの方法を説明するために、我々は最初の削除gdインデックスを:

DELETE /ギガバイト

CURLコピーがされてセンスで表示します

次に指定し、新しいインデックスを作成してtweet使用してドメインenglish・アナライザを:

PUT /ギガバイト 
{ 
  "マッピング":{ 
    "つぶやき":{ 
      "プロパティ":{ 
        "つぶやき":{ 
          "タイプ": "文字列"、
          "分析": "英語" 
        }、
        "日付":{ 
          "タイプ": "日付" 
        }、
        "名前":{ 
          "タイプ": "文字列" 
        }、
        "USER_ID":{ 
          "タイプ": "長いです" 
        } 
      } 
    } 
  } 
}

CURLコピーがされてセンスで表示します

で指定されたメッセージ本文mappingsインデックスが作成されます。

その後、私たちはすることを決定しtweet、新しい名前を追加するマップtagnot_analyzed、テキストフィールドを使用します_mapping

PUT / GB / _mapping /つぶやき
{ 
  "プロパティ":{ 
    "タグ":{ 
      "タイプ": "string"は、
      "インデックス": "not_analyzed" 
    } 
  } 
}

CURLコピーがされてセンスで表示します

私たちはどのような場合には、我々はそれらを変更することはできませんので、再度、既存のすべてのフィールドをリストする必要はありません。新しいドメインは、既存のマップに組み込まれています。

テストの地図

あなたは使用することができanalyze、マッピングAPIのテスト文字列フィールドを。次の二つの出力要求を比較します。

GET /ギガバイト/ _analyze 
{ 
  "フィールド": "つぶやき"、
  "テキスト": "黒猫"
} 

GET /ギガバイト/ _analyze 
{ 
  "フィールド": "タグ"、
  "テキスト": "黒猫"
}

CURLコピーがされてセンスで表示します

私たちは、テキスト分析の内側にメッセージ本体を転送します。

tweet2入力フィールドを生成しblack、そしてcattagドメインは、別のエントリを生成しますBlack-cats言い換えれば、私たちのマッピングが正常に動作します。

おすすめ

転載: www.cnblogs.com/dgwblog/p/12381750.html