ElasticSearch(es) match_phrase查询
es中match_phrase在查询时也会先分析查询字符串,然后对这些词项进行搜索,和match不同的是match_phrase查询只会保留包含全部查询字符串的文档。
参数
slop 查询词条能够相隔多远时仍然将文档视为匹配
使用了slop的短语匹配中,所有的单词都需要出现,但是单词的出现顺序可以不同。如果slop的值足够大,那么单词的顺序可以是任意的。
match对比
GET /bank/_search { "query": { "match": { "title": "java学习" } } }
title被分词成“java”“学习”,包含这这二个词中的一个或多个的文档就会被搜索出来。
GET /bank/_search { "query": { "match_phrase": { "title": "java学习" } } }
要完全匹配“java学习”的文档才会被搜索出来。这种比较严格,可以用slop来调节
GET /bank/_search { "query": { "match_phrase": { "title": "java学习", "slop":3 } } }
slop值越大,搜索的顺序可以忽略不计。
ElasticSearch中一般情况下如果不希望被分词可以使用match_phrase进行搜索。
版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。