我在Elasticsearch中有一个字段,其值为"PEI.H.02354.01.".当我用querystring
as 搜索时
{ "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." }
有谁知道为什么会这样,以及如何解决这个问题?