"query_string": { "query": "zhang bo +san" 这按照我的猜想应该是 必须有 san , zhang bo 有一个 。但是 却 可以 zhang bo 都没有。 这个就不知道为啥了,姑且 当做 es 的 一个bugger 吧。 在说说 mach 查询 。mach 查询只是 分词以后查询。相当于 query_string 空格 隔开的 一个子项。
"query_string": { "query": "zhang bo +san" 这按照我的猜想应该是 必须有 san , zhang bo 有一个 。但是 却 可以 zhang bo 都没有。 这个就不知道为啥了,姑且 当做 es 的 一个bugger 吧。 在说说 mach 查询 。mach 查询只是 分词以后查询。相当于 query_string 空格 隔开的 一个子项。
esquery_string和match的区别 esquery_string和match的区别 默认使⽤空格拆分成多个⼦项,并且每个⼦项都会去分词查询。可以通过 default_operator 指定⼦项之间的关系。默认是或。然后每个⼦项前⾯可以使⽤ -+ 指定必须有或者必须么有。并且加了修饰符 +- 的提出单独算。 测试数据:{ "took": 4523,...
query_string:和match类似,但是match需要指定字段名,query_string是在所有字段中搜索,范围更广泛。 不仅查询了desc中包含了nosql,还查询了desc包含Java的结果。所以说query_string是条件最宽泛,查询结果最广泛的查询。 如果想使用精确查询,而且想要匹配的更多,可以使用match_phase,在使用term查询的时候一定要注意最好不...
match_phase :会对输入做分词,但是需要结果中也包含所有的分词,而且顺序要求一样。以"hello world"为例,要求结果中必须包含hello和world,而且还要求他们是连着的,顺序也是固定的,hello that word不满足,world hello也不满足条件。query_string :和match类似,但是match需要指定字段名,query_string...
1. match match:模糊匹配,需要指定字段名,但是输入会进行分词,比如"hello world"会进行拆分为hello和world,然后匹配,如果字段中包含hello或者world,或者都包含的结果都会被查询出来,也就是说match是一个部分匹配的模糊查询。查询条件相对来说比较宽松。 2. term ...
主要测试并(and)查询场景下,query_string、match、term三种可以满足并查询条件的方式以及彼此的差异 1. 数据准备 ES中插入两个doc。doc对应的数据结构,tags keyword; tags0 text; { "tags0":["马云","阿里巴巴","支付宝"] "tags1":"马云 阿里巴巴 支付宝" } { "tags0":[""阿里巴巴","支付宝","马云...
今天线上发现一个问题,从而引出对query_string 和 match 的区别的思考。 curl -XGET'http://localhost:9200/*/*/_search?pretty' -d '{"from":0,"size":10,"fields": ["title"],"query": {"query_string": {"query":"100CrMo7 +圆钢","fields": ["title"] ...
我们分享了 request body search 中的 MatchQuery 和 MatchPhraseQuery(请参考如下经验引用),但这两种查询有一个共同的缺点,那就是只能对一个字段进行查询 (同时,MatchQuery本身不支持 + -),本篇经验将继续分享request body search中的另外两种支持多字段查询的方式:QueryStringQuery 和 SimpleQueryStringQuery。