2017-04-11 13 views
0

Elasticsearchの新機能です。私はデフォルトでは、ESは各フィールドのすべての単語のインデックスを作成します。しかし、私のユースケースでは、2つのフィールドしか検索しないので、ESに何らかの理由でドキュメント内のすべてのインデックスを作成せず、マッピングで指定したフィールドのみをインデックスに作成するように考えています。 SOここelasticsearchでインデックスフィールドの数を制限することはできますか?5.3

は私のマッピング

PUT /benefits 
    { 
    "mappings": { 
     "benefit": { 
     "_all": {"enabled": false}, 
      "properties": { 
      "subCategory": {"type": "text"}, 
      "description": {"type": "text"} 
     } 

     } 
    } 
} 

で、私の文書は、だから私は唯一"subCategory""description"上(ない"planName"または任意の上で検索されます。この

{ 
"bpi" : "123456", 
"category" : "CAT1", 
"subCategory" : "Primary Care Physician Copay", 
"planName" : "MyPlan HMO Individual", 
"description" : "0 per office visit for Convenient Care & Minute Clinics Complete ABC Document", 
"categoryId" : 200.0, 
"desktop360Id" : 1001.0, 
"createTimeStamp" : "2017-02-21T22:00:12.000Z" 

}

のように見えます他のフィールドテキスト)、上記のマッピングに示すようにインデックス/マッピングを作成しましたが、他のフィールドでテキストを検索することはできますよくたとえば、「MyPlan」を"planName"フィールドから検索すると、検索が機能し、このドキュメントが表示されます。それは、すべてのフィールドのすべての単語(それらの 'a'、 'of'タイプを除く)のインデックスを作成したことを意味しますか?私は、私が必要としないインデックスに記憶を費やしたくないので、この質問をします。

提案がありますか?

+1

マッピングに「_all」と同じレベルの「dynamic」:「false」を追加するだけです。これはオブジェクトレベルで行いますが、インデックスレベルまたはテンプレートで設定してすべてのインデックスに対して設定することもできます。これに関する情報[here](https://www.elastic.co/guide/en/elasticsearch/reference/current/dynamic-mapping.html) – Olivier

+0

ありがとうOlivier。私はそれを得たと思う。私は 'あなたの質問に答える'の例を参照してください。 – JBone

答えて

2

インデックスから他のフィールドを除外するには、マッピングでそれらを指定し、indexプロパティをnoの値に設定する必要があります。ここに例があります

+0

これは動作します。ありがとう。 – JBone

+0

私はフォローアップの質問があります。私は別の質問を掲示すべきであることを知っていますが、私はすでに質問の文脈をタイプアップしています。 「説明」よりも「サブカテゴリ」にある検索結果に、より多くの重みを付けるにはどうすればよいですか?助言がありますか? – JBone

+0

私は、この2つのフィールドにインデックスを作成する際に "ブースト"値を追加することで、これを考え出しました。ありがとう – JBone

関連する問題