无法在ElasticSearch中将字母数字字符串与query_string中的通配符匹配

时间:2016-12-26 15:57:05

标签: elasticsearch wildcard

我使用以下映射:

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

我的文档包含两个字段:

  • 标签:主要是字母数字,可能包含一些' /'或者' @' chars
  • destCode:99%数字字符串

以下query_String(我知道通配符不好):

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

正确匹配0144604,4521604 destCode值。

但对于标记字段,它不适用于查询:

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

与值不匹配:CDG711892,CDG88978和我也试过小写cdg *但没有成功。

1 个答案:

答案 0 :(得分:1)

在映射中,您将字段设置为未分析,因此当您索引数据时,elasticsearch不会对其进行分析,因此如果您将数据索引为小写,则在搜索大写时不会发现任何内容。 删除

index": "not_analyzed

它会起作用