在 Mapping 里面,将 dynamic 参数设置成 strict 可以拒绝索引包含未知字段的文档。 此条 Tips 由 medcl 贡献。

携带有通配符的query_string查询结果解析问题

Elasticsearch | 作者 jingkyks | 发布于2015年11月27日 | 阅读数:10606

文档中的内容是{"name":"李世民"}
分别进行以下query_string查询:
李*------命中
李?------不能命中
李世*----不能命中
李世? ----不能命中
由于没有设置中文分词,所以采用默认的分词器,并且query_string默认没有开启analyze_wildcard选项。
无论输入中带有“*”还是“?”,在标准分词器的情况下,都会忽略。因此上边的输入被分解为
“李”“世”。照这样分析,任何一种输入都应该可以命中才合理。
为什么后三种情况为什么不能命中结果呢?
 
已邀请:

jingkyks - 水果铅笔2B橡皮

赞同来自:

在qq群里得到了解答。
关键点在于---加入了通配符就变成了一个词。
 

shiyuan

赞同来自:

"李世民",在标准分词器的情况下分成:李”“世”“民”
 
*匹配任意字符(包括空字符)
?匹配任意单字符

要回复问题请先登录注册