端口映射 GraphQL 阿里巴巴 acm function tkinter sed scope datagrid static History.js vue网站模板 vue绑定点击事件 安卓项目实战 js鼠标离开事件 jquery解析json数据 jquery关闭当前窗口 git登陆命令 vim跳到文件末尾 less的比较级 mysql或者条件 excel带格式复制粘贴 docker保存镜像 linux重启mysql python操作mysql java抽象 java基础学习 java判断是否为空 linux教学 怎么安装linux php语言入门 迷你版kms 电池救星 js数组删除指定元素 html5网页制作 js数组移除指定元素 地球末日攻略 bz2解压 ps蒙版抠图 删除mysql服务
当前位置: 首页 > 学习教程  > 编程语言

ElasticSearch 匹配查询(match、match_phrase)

2020/8/31 14:03:34 文章标签:

ElasticSearch 匹配查询(match、match_phrase)

match查询属于全文查询,在查询时,ES会先分析查询字符串,然后根据分词构建查询。
match_phrase在查询时也会先分析查询字符串,然后对这些词项进行搜索,不同的是match_phrase查询只会保留包含全部查询字符串的文档

1、先向ES查询俩个文档,以便测试:

PUT test2/_doc/1
{
  "name": "宝马法拉利兰博基尼"
}

PUT test2/_doc/2
{
  "name": "宝马兰博基尼布加迪威龙"
}

2、使用match查询

GET test2/_search
{
  "query": {
    "match": {
      "name": "宝马法拉利"
    }
  }
}

查询结果为全部文档:

 "hits" : {
    "total" : 2,
    "max_score" : 1.4384104,
    "hits" : [
      {
        "_index" : "test2",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.4384104,
        "_source" : {
          "name" : "宝马法拉利兰博基尼"
        }
      },
      {
        "_index" : "test2",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.5753642,
        "_source" : {
          "name" : "宝马兰博基尼布加迪威龙"
        }
      }
    ]
  }

3、使用match_phrase查询

GET test2/_search
{
  "query": {
    "match_phrase": {
      "name": "宝马法拉利"
    }
  }
}

查询结果只保留了包含“宝马法拉利”的文档,虽然第二个文档也有这俩词,但不是连着的

{
  "took" : 3,
  "timed_out" : false,
  "_shards" : {
    "total" : 5,
    "successful" : 5,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : 1,
    "max_score" : 1.4384104,
    "hits" : [
      {
        "_index" : "test2",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 1.4384104,
        "_source" : {
          "name" : "宝马法拉利兰博基尼"
        }
      }
    ]
  }
}

本文链接: http://www.dtmao.cc/news_show_150160.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?