ES6的查询语句小实践

2020-06-03 00:00:00 查询 字段 位置 匹配 分词

1、match查询

GET bank/_search

{

"query": {

"match": {

"address": "Holmes Place"

}

}

}

对字段进行了分词,默认or查询。

针对某个字段:加and

加or

2、match_phrase查询

短语查询:同时满足一下条件

1:分词后的词都需要出现在字段中

2:字段中词项顺序一致 位置要相邻,每个词在分词时,附带位置信息:格式如下:

在匹配的时候其实相当于满足一下条件:

  • quick、brown和fox必须全部出现在某个字段中。
  • brown的位置必须比quick的位置大1。
  • fox的位置必须比quick的位置大2。

增加slop参数:slop参数告诉match_phrase查询词条能够相隔多远时仍然将文档视为匹配。相隔多远的意思是,你需要移动一个词条多少次来让查询和文档匹配?

为了让fox quick查询能够匹配我们的文档,需要slop的值为3:


上图成功匹配。改成如下就没办法匹配

此时如果想要匹配,设置slop参数。只需要slop 为1即可。如果slop设置足够大,相当于词条顺序任意。

3、match_phrase_prefix查询 前缀查询

对match_phrase进行了扩展,查询内容的后一个分词与只要满足前缀匹配即可。

4、multi_match查询

只要其中一个字段满足即可。相当于多个mathc,然后组合在一起,更多内容请查看:

multi_match 查询 | Elasticsearch: 权威指南 | Elasticwww.elastic.co

相关文章