终于,通过query_string就可以正常使用得到查询结果为不分词的了。
我们的业务并不需要分词,我在各个字段也设置了,not_analyzed。但是在使用query_string对_all字段进行查询的时候, 发现结果是分词之后,赶紧找问题。。最后在官网找到这么一段话: Remember that the _all field is just an analyzed string field. It uses the default analyzer to analyze its values, regardless ...
ES query_string 踩坑 今天突然遇到文件名搜不到的情况,查看了ESDSL语句,发现文件名使用query_string查询,而文件名是keyword类型字段。 经过实验和上网搜索,发现keyword类型字段是不分词的,query_string查询是分词的,只有完全匹配才能使用query_string查询到keyword类型字段,因此模糊匹配的方式查询keyword类型字段,是行不通...
1、term查询keyword字段 keyword字段不分词 term查询keyword字段,需要完全匹配 2、term查询text字段 text字段分词 term查询text字段,必须为text字段分词后中的某一个才行。如“我真帅”分词为[“我”,“真”,“帅”],term必须为“我”或“真”或“帅”,才能查到,而“我帅”、“真帅”不行。 二、match match...
match 查询语句分词 1、match查询keyword字段 keyword字段不分词 match查询keyword字段,需要完全匹配 2、match查询text字段 text字段分词 match查询text字段,只需要match分词结果中和text分词有匹配就可以查出。如“我真帅”分词为[“我”,“真”,“帅”],match的查询语句“真帅”被分词为[“真”,“帅”],其中“真...
1)检索关键词“系统学”,根据搜索的field对应的分词器,进行不同的分词:"content.ik_smart_analyzer"字段(简称field1)分词,得到一个Token【系统学】;"content.ik_max_analyzer"字段(简称field2)分词,得到三个Token【系统学,系统,学】。 2)使用检索词的Token在对应的field的PostingList中进行检索,等价于sql语句:【...
match_phase :会对输入做分词,但是需要结果中也包含所有的分词,而且顺序要求一样。以"hello world"为例,要求结果中必须包含hello和world,而且还要求他们是连着的,顺序也是固定的,hello that word不满足,world hello也不满足条件。query_string :和match类似,但是match需要指定字段名,query_string...
match会被分词,而keyword不会被分词,match的需要跟keyword的完全匹配可以。 其他的不完全匹配的都是失败的。 2)match查询text字段 match分词,text也分词,只要match的分词结果和text的分词结果有相同的就匹配。 成功。如果都不相同就失败了。 3. 1)match_phrase匹配keyword字段。
term不会分词。而keyword字段也不分词。需要完全匹配才可。 image image 成功。 但是如果: image image 则查询失败。 term查询text字段。 因为text字段会分词,而term不分词,所以term查询的条件必须是text字段分词后的某一个。 image image 查询成功。 image ...
esquery_string和match的区别 esquery_string和match的区别 默认使⽤空格拆分成多个⼦项,并且每个⼦项都会去分词查询。可以通过 default_operator 指定⼦项之间的关系。默认是或。然后每个⼦项前⾯可以使⽤ -+ 指定必须有或者必须么有。并且加了修饰符 +- 的提出单独算。 测试数据:{ "took": 4523,...