2017-10-13 3 views
-1

値のテキストがtypeのパラメータであり、もう一度fieldsの値のテキストの別のtypeパラメータがあります。 englishanotherが意味するものは分かりません。 fieldsのパラメータの機能は何ですか?また、それらを簡単に使用する方法や恩恵を受ける方法を教えてください。Elasticsearchでのフィールドの使い方は?

PUT my_index 
{ 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "text": { 
      "type": "text", 
      "fields": { 
      "english": { 
       "type":  "text", 
       "analyzer": "english" 
      }, 
      "another": { 
       "type":  "keyword", 
       "analyzer": "standard" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

答えて

3

この構造はmulti-fieldと呼ばれています。

その背後にあるアイデアは、各サブフィールドに異なる分析パイプラインを適用できるようにすることです。あなたの場合、text.englishサブフィールドはenglish analyzerを使用して分析され、text.anotherサブフィールドはstandard analyzerによって分析されます。

それの美しさは、あなたの文書が唯一textフィールドを持っている必要があり、その後、クエリで使用すると、透過的texttext.englishtext.anotherサブフィールドを参照することができるでしょうということです。あなたのtext.anotherサブでnicedogrunaftercat

  • :このドキュメントのインデックスを作成した後

    # Your document 
    { 
        "text": "The nice dog runs after the cat" 
    } 
    

    、次のトークンを持っているつもりだあなたtext.englishサブフィールドで

    • -fieldには、次のトークンがあります:thenicedogrunsaftertheは、
    • catは最終的にトップレベルtextフィールドであなたはstandardアナライザは、デフォルトなしアナライザは、テキストフィールドに指定されていないものですので、text.anotherと同じトークンを持っているつもりです。
  • +0

    私はアナライザを知っていますが、設定>解析>アナライザ> my_analyzerで定義します。アナライザを定義する方法はさまざまですか?また、私のテキストフィールドのタイプはテキストですが、別のタイプはキーワードです。私が理解する限り、アナライザごとに異なるタイプパラメータを指定することはできますか? – Orhun

    +1

    設定では、[カスタムアナライザ](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-custom-analyzer.html)、つまり自分のニーズに合わせてカスタマイズできるものを定義できます。あなたのマッピングでは、組み込みのアナライザー(あなたのケースでは 'english'や' standard'など)と設定で定義したカスタムアナライザーを使用することができます。 'keyword'フィールドは分析プロセスを受けませんこれらのフィールドの内容は、そのまま1つのトークンに格納されます。 – Val

    +1

    キーワードフィールドでは、[normalizers](https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis)を使用することができます。非分析フィールド(小文字など)に少数の変換を適用することができます。 – Val

    関連する問題