2016-12-26 5 views
0

にQUERY_STRING内のワイルドカードと英数字の文字列に一致することができません:私は次のマッピングを使用していElasticSearch

  • タグ:主に英数字と一部」を含むことが

    "letters": { 
        "mappings": { 
         "letter": { 
          "properties": { 
          "destCode": { 
           "type": "string", 
           "index": "not_analyzed" 
          }, 
          "tag": { 
           "type": "string", 
           "index": "not_analyzed" 
          } 
         } 
         } 
        } 
    } 
    

    マイドキュメントは、2つのフィールドが含まれています99%の数値文字列

followi:/」または '@'

  • destCodeを文字NGのQUERY_STRING(私はワイルドカードが悪いことを知っている):

    "query": { 
        "query_string": { 
         "default_field": "destCode", 
         "query": "*604" 
        } 
    } 
    

    が正しく0144604、4521604 destCode値と一致しました。

    しかし、それはタグフィールドでは動作しません、元のクエリ:

    "query": { 
        "query_string": { 
         "default_field": "tag", 
         "query": "CDG*" 
        } 
    } 
    

    値と一致しません:CDG711892、CDG88978とiも成功せず、小文字CDG *を試してみました。

  • +0

    @mfundiに動作しますか? – Yeikel

    答えて

    1

    マッピングでは、フィールドを分析しないように設定します。そのため、データをインデックス化するとき、elasticsearchは分析しません。そのため、データを小文字でイ​​ンデックスすると、大文字を検索しても何もヒットしません。 は

    index": "not_analyzed 
    

    を削除し、あなたには、いくつかのサンプルドキュメントをご提供することができ、それは

    関連する問題