ES 阶段理解 match & phrase_match & term 附录 match vs. phrase_match ES 阶段理解 ES 中包含“数据索引”和“数据召回”两个阶段。为了更好地理解各种查询方式,需要理解这两个环节对文本的处理。 在数据索引阶段,原始文本会根据 mapping 中定义的字段类型结合 analyzer 来对文本进行分词。分词后得到一个字符串...
es中match_phrase在查询时也会先分析查询字符串,然后对这些词项进行搜索,和match不同的是match_phrase查询只会保留包含全部查询字符串的文档。 参数 slop 查询词条能够相隔多远时仍然将文档视为匹配 使用了slop的短语匹配中,所有的单词都需要出现,但是单词的出现顺序可以不同。如果slop的值足够大,那么单词的顺序可以是...
直接用match_phrase短语搜索,会导致必须有term都在doc field中出现,而且距离在slop限定范围内,才能匹配上 此时可以用bool组合match query和match_phrase query一起,来实现上述效果 GET/forum/article/_search{"query":{"bool":{"must":{"match":{"title":{"query":"java spark"-->java或spark或java spark,ja...
以下是match_phrase查询的语法规则和检索举例: 语法规则: Php { "query": { "match_phrase": { "field":"短语" } } } 其中,field是要查询的字段名,短语是要匹配的短语。 检索举例: 假设我们有一个名为products的索引,其中包含一个名为description的字段,现在我们要查找包含短语“苹果手机”的所有文档。可以...
原文链接:es笔记三之term,match,match_phrase 等查询方法介绍 首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。 keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理 text 存储数据的时候会对字符串进行分词处理,然后存储。
match_phrase 匹配短语,使用这个方法不加其他参数的情况下,可以看作是会匹配包含这个短语、且顺序一致的数据。 比如说对于 address="read a book" 的数据,搜索read a,a book,read a book都可以筛选到这条数据。 GET/exam/_search{"query":{"match_phrase":{"address":"read a"}}}GET/exam/_search{"quer...
而phrase_match则要求查询中的词顺序与text_array_n中的一段连续词匹配。相比之下,term查询更为简单,它只匹配完全一致的单个词,不考虑顺序或短语。总的来说,match、phrase_match和term的选择取决于查询的精确度和对词序的要求,它们在处理文本时采用不同的匹配策略。
使用match_phrase时: 1.es会先过滤掉不符合的query条件的doc,即doc[2]中没有"东方"两个词汇,会被过滤掉 2.es会根据分词的position对分词进行过滤和评分,这个是就slop参数,默认是0,意思是查询分词只需要经过距离为0的转换就可以变成跟doc一样的文档数据,例如:对于doc[1]来说slop就是0了,对于doc[3]slop就是...
原文链接:es笔记三之term,match,match_phrase 等查询方法介绍 首先介绍一下在 es 里有两种存储字符串的字段类型,一个是 keyword,一个是 text。 keyword 在存储数据的时候是作为一个整体存储的,不会对其进行分词处理 text 存储数据的时候会对字符串进行分词处理,然后存储。
1、match查询:会先对搜索词进行分词,比如“白雪公主和苹果”,会分成“白雪”“公主”“苹果”。含有相关内容的字段,都会被检索出来。 2、match_phrase查询:match_phrase与slop一起用,能保证分词间的邻近关系,slop参数告诉match_phrase查询词条能够相隔多远时仍然将文档视为匹配,默认是0。为0时 必须相邻才能被检索出...