2017-02-01 15 views
0

私はすべてのマイドキュメントに10個程度のフィールドを持っています。特に1つのドキュメントとタイプの文字列で一意のproduct_codeです。ElasticSearchで条件付きで曖昧性を追加する

私はうまく機能_allに一致クエリを持っていますが、私は正確なproduct_code

を検索する機能を維持しながら、「ファジーマッチ」を実行したいと思いますがここで私が試みられてきたものだ:

"query": { 
    "bool": { 
     "should": [ 
      { 
       "match": { 
        "product_code": { 
         "query": searchString, 
         "operator": "AND" 
        } 
       } 
      }, 
      { 
       "match": { 
        "_all": { 
         "query": searchString, 
         "operator": "AND" 
         "fuzziness": 2, 
         "prefix_length": 2 
        } 
       } 
      } 
     ] 
    } 
} 

このアプローチの問題は、_allに含まれているため、曖昧さがproduct_codeの検索にも適用されていることです。

product_code最初と全く結果が見つからない場合は、_all上で検索を実行、または_allクエリからproduct_codeを除外するには、検索を実行するためのいずれかの方法がありますか?

ご協力いただきまして誠にありがとうございます。

答えて

1

はいはい、次のマッピングを使用して_allからproduct_codeを除外できます。

PUT index_name 
{ 
    "settings": { 
     "analysis": { 
      "analyzer": {}, 
      "filter": {} 
     } 
    }, 
    "mappings": { 
     "type_name": { 
      "properties": { 
       "product_code": { 
        "type": "string", 
        "include_in_all": false 
       } 
      } 
     } 
    } 
} 

また、query_stringの検索でも曖昧さを感じることができます。

がこの提案を

+0

感謝を助け、演算子、ぼやけ設定で

{ "query": { "bool": { "should": [{ "query_string": { "fields": ["product_code", "other_field"], "query": "this is my string", "default_operator": "AND", "fuzziness": 2, "fuzzy_prefix_length": 2 } }, { "match": { "product_code": { "query": "this is my string", "operator": "AND" } } }] } } } 

希望を次のクエリを使用するクエリ文字列を使用します。マッピングを変更するのではなく、クエリ自体でこれを達成する方法はありますか? –

+0

あなたが使っているelasticsearchのバージョンは? – user3775217

+0

あなたは代わりにquery_stringを使用します。私は曖昧さのあるクエリ文字列クエリに対して私の答えを編集しました – user3775217

関連する問題