【发布时间】:2014-12-04 13:38:54
【问题描述】:
我在 Elasticsearch 中有一个值为“PEI.H.02354.01.”的字段。当我用querystring 搜索时
{
"query":{
"query_string":{
"query":"field:PEI.H.02354.01.",
"default_operator":"AND"
}
}
}
然后返回一个结果,这是正确的行为。但如果我使用通配符搜索,则不会返回任何结果,例如
{
"query":{
"query_string":{
"query":"field:PEI.H.02354.01.*",
"default_operator":"AND"
}
}
}
该字段是字符串类型并已分析。下面是创建索引的代码,包括分析器和映射。
{
"settings":{
"analysis":{
"analyzer":{
"number":{
"type":"custom",
"tokenizer":"keyword",
"filter":[
"lowercase"
],
"char_filter":[
"number_filter"
]
},
"diacritical":{
"type":"custom",
"tokenizer":"standard",
"filter":[
"standard",
"lowercase",
"asciifolding",
"nfd_normalizer"
]
}
},
"filter":{
"nfd_normalizer":{
"type":"icu_normalizer",
"name":"nfc"
}
},
"char_filter":{
"number_filter":{
"type":"pattern_replace",
"pattern":"[^\\d]+",
"replacement":""
}
}
}
},
"mappings":{
"testType":{
"_source":{
"enabled":false
},
"_all":{
"enabled":false
},
"_timestamp":{
"enabled":"true",
"store":"yes"
},
"properties":{
"field":{
"store":"yes",
"type":"string",
"index":"analyzed",
"analyzer":"diacritical"
}
}
}
}
最后是一个示例插入
{
field: "PEI.H.02354.01."
}
有谁知道为什么会发生这种情况以及如何解决这个问题?
【问题讨论】: