2017-05-11 9 views
0

私はElasticSearch初心者ですので、これはかなり基本的な質問です。キーワードフィールドを配列または単一の文字列にする必要がありますか?

ドキュメントにそのフィールドの文字列の配列が含まれている場合は、フィールドをインデックスのキーワードとしてマップしますか?または、すべてのキーワードがスペースで区切られた1つの文字列ですか?

私のインデックスは、この(キーワードは我々が興味を持っているものです)のように見える場合:

{ 
    "esidx_j_cv" : { 
    "mappings" : { 
     "j_cv" : { 
     "properties" : { 
      "Id" : { 
      "type" : "text", 
      "fields" : { 
       "keyword" : { 
       "type" : "keyword", 
       "ignore_above" : 256 
       } 
      } 
      }, 
      "Keyword" : { 
      "type" : "text", 
      "fields" : { 
       "keyword" : { 
       "type" : "keyword", 
       "ignore_above" : 256 
       } 
      } 
      }, 
      "Name" : { 
      "type" : "text", 
      "fields" : { 
       "keyword" : { 
       "type" : "keyword", 
       "ignore_above" : 256 
       } 
      } 
      } 
     } 
     } 
    } 
    } 
} 

文書は次のようになります。

{ 
    "_index" : "esidx_j_cv", 
    "_type" : "j_cv", 
    "_id" : "2fab7349-c13f-447a-95fa-984df6836c14", 
    "_score" : 1.0, 
    "_source" : { 
     "Id" : "2fab7349-c13f-447a-95fa-984df6836c14", 
     "Name" : "Jim Bloggs", 
     "Keyword" : [ 
     "San", 
     "Andreas", 
     "Fault", 
     "California" 
     ] 
    } 
} 

またはこのような:

{ 
    "_index" : "esidx_j_cv", 
    "_type" : "j_cv", 
    "_id" : "2fab7349-c13f-447a-95fa-984df6836c14", 
    "_score" : 1.0, 
    "_source" : { 
     "Id" : "2fab7349-c13f-447a-95fa-984df6836c14", 
     "Name" : "Jim Bloggs", 
     "Keyword" : "San Andreas Fault California" 
    } 
    } 

ありがとう、

アダム。

+0

文書のいずれかを検索することができます。 :) – Richa

+0

ここで 'keyword'は単にフィールド名を意味するか、' keyword'型の値をそこに格納しますか? – avr

答えて

0

アレイを使用するのが最も慣用的で、私のお勧めです。このようにクエリできます(どちらのオプションでもこのクエリは実際に動作します)。

GET index/_search 
{ 
    "query": { 
    "match": { 
     "Keyword": "California" 
    } 
    } 
} 
+0

すべての回答に感謝します。 –

関連する問題