通配符"*"在三种查询关键字中的区别,以下是在elasticsearch采用standard analyze的前提下在ES集群中um.qa.article.2019.07.25做的测试
- 1
| 查询方式 | 查询DSL | 查询结果描述 |
|---|---|---|
| match_phrase 1 | {"query" : {"bool" : {"must" : [{"bool" : {"should" : [{"match_phrase" : {"mainContent" : "CS"}}]}}]}}} |
返回包含“CS”关键字并且该关键字前后没有字母或数字的数据 |
| query_string 1 | {"query" : {"bool" : {"must" : [{"bool" : {"should" : [{"query_string" : {"default_field" : "mainContent","query" : "CS"}}]}}]}}} |
同match_phrase 1 |
| simple_query_string 1 | {"query" : {"bool" : {"must" : [{"simple_query_string" : {"fields" : ["mainContent"],"query" : "CS"}}]}}]}}} |
同match_phrase 1 |
结论:以上三种查询等价
- 2

本文探讨了Elasticsearch中match_phrase、simple_query_string和query_string三种查询方式的区别。在标准分析下,通过通配符"*"的使用测试,发现它们的行为差异。match_phrase会忽略通配符,而query_string和simple_query_string将通配符视为前缀匹配。此外,query_string允许通配符在最前面,但simple_query_string如果第一个词是"*"则无结果。
最低0.47元/天 解锁文章
1180

被折叠的 条评论
为什么被折叠?



