2017-12-27 20 views
1

query_stringクエリの機能を利用したいと思いますが、フィールドのサブセット(すべてではなく、1つではなく)でデフォルトで検索するクエリが必要です。多くのデフォルトフィールドを渡そうとすると、クエリは失敗します。助言がありますか?複数のデフォルトフィールドを持つElasticsearch query_stringクエリ

は、クエリ内の特定のフィールドを指定していないので、私は、デフォルトでは三つのフィールドを検索したい:あなただけfieldsパラメータを使用し、上記のように3つの特定のフィールドでクエリを作成したい場合は

{ 
    "query": { 
     "query_string" : { 
      "query" : "some search using advanced operators OR dog", 
      "default_field": ["Title", "Description", "DesiredOutcomeDescription"] 
     } 
    } 
} 

答えて

2

。あなたがそれらを指定せずに、これらの3つのフィールドにはデフォルトで検索したい場合は

{ 
    "query": { 
     "query_string" : { 
      "query" : "some search using advanced operators OR dog", 
      "fields": ["Title", "Description", "DesiredOutcomeDescription"] 
     } 
    } 
} 

あるいは、あなたがマッピングを設定するときcopy_toパラメータを使用する必要があります。次に、既定のフィールドを連結フィールドに設定します。

PUT my_index 

{ 
    "settings": { 
    "index.query.default_field": "full_name" 
    }, 
    "mappings": { 
    "my_type": { 
     "properties": { 
     "first_name": { 
      "type": "text", 
      "copy_to": "full_name" 
     }, 
     "last_name": { 
      "type": "text", 
      "copy_to": "full_name" 
     }, 
     "full_name": { 
      "type": "text" 
     } 
     } 
    } 
    } 
} 

私はこれを使用しているとトークン化の制御を制限することができますので、あなたが唯一の連結フィールドに1枚のトークナイザを指定することができるよう、それをお勧めしません。

Hereはcopy_toのページです。

+1

'copy_to 'を使用することで、関連性を判断するための「フィールド長ノルム」の要素を逃す可能性があることに注意してください。 '_all'フィールド(ES 6.0btwでは廃止予定)に依存すると、同じ効果があります。詳細情報:https://www.elastic.co/guide/en/elasticsearch/guide/2.x/scoring-theory.html#field-norm –

関連する問題