## elasticsearch - match、match_phrase和match_phrase_prefix区别

elasticsearch - match、match_phrase和match_phrase_prefix区别

创建索引

PUT /article
{
  "settings": {
    "number_of_replicas": 2,
    "number_of_shards": 2
  }, 
  "mappings": {
    "properties": {
      "context":{
        "type": "text"
      }
    }
  }
}

//插入数据
POST /article/_doc/1
{
   "content":"hello world"
}

POST /article/_doc/2
{
   "content":"hello me world"
}

POST /article/_doc/3
{
   "content":"world war"
}

POST /article/_doc/4
{
   "content":"hello me other world"
}

POST /article/_doc/5
{
   "content":"hello me other world jack"
}

POST /article/_doc/6
{
   "content":"hello me other world jacce"
}

match

GET /article/_search
{
  "query": {
    "match": {
      "content": "hello world"
    }
  }
}

match 会对 content 分词,会查询出包含 hello 或 world 的数据,如:

hello me other world
hello world
hello me world
hello me other world jack
world war

match_phrase

会分词,但有顺序

GET /article/_search
{
  "query": {
    "match_phrase": {
      "content":{
        "query":"hello world"
      }
    }
  }
}

查询结果:

hello world

还可以传 slop属性,用于控制中间可以隔多少个单词

GET /article/_search
{
  "query": {
    "match_phrase": {
      "content":{
        "query":"hello world",
        "slop":2
      }
    }
  }
}

结果:

hello world
hello me other world
hello me world
hello me other world jack

match_phrase_prefix

这种查询的行为与 match_phrase 查询一致,但是它将查询字符串的最后一个词作为前缀(prefix)使用

GET /article/_search
{
  "query": {
    "match_phrase_prefix": {
      "content":{
        "query":"hello world ja",
        "slop":2
      }
    }
  }
}

结果:

hello me other world jack
hello me other world jacce
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值