我在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."
}
有没有人知道为什么会出现这种情况以及如何解决?