带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(13)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(13)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(12) https://developer.aliyun.com/article/1231058


比较 match_phrase 与 match 区别

 

l match_phrase

l 将查询条件的中的信息看做一个整体,如下面的 “goods t” 必须 goods 在前 t 在后。

 

l match

l 将查询中的条件做分词处理后,再去做查询。

 

#查询不到任何数据,因为不存在'goods t'的词组
GET /my_goods/_search
{
  "query": {
    "match_phrase": {
      "goodsName": "goods t"
    }
  }
}
#能查询到数据,因为文档中包含goods和t的词组
GET /my_goods/_search
{
  "query": {
    "match": {
      "goodsName": "goods t"
    }
  }
}

在 match_phrase 中,可以通过 slop 来控制单词中间的间隔,默认为 0,下面举例说明


GET /my_goods/_search
{
  "query": {
    "match_phrase": {
      "goodsName": {
        "query": "apple test",
        "slop": 1
      }
    }
  }
}
#返回
{
  "took" : 10,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "skipped" : 0,
    "failed" : 0
  },
  "hits" : {
    "total" : {
      "value" : 1,
      "relation" : "eq"
    },
    "max_score" : 3.08089,
    "hits" : [
      {
        "_index" : "my_goods",
        "_type" : "_doc",
        "_id" : "21",
        "_score" : 3.08089,
        "_source" : {
          "goodsName" : "apple goods test",
          "skuCode" : "skuCode3",
          "brandName" : "美国苹果",
          "closeUserCode" : [
            "0"
          ],
          "channelType" : "cloudPlatform",
          "shopCode" : "sc00001",
          "publicPrice" : "8388.88",
          "groupPrice" : null,
          "boxPrice" : [
            {
              "boxType" : "box1",
              "boxUserCode" : [
                "htd003",
                "uc004"
              ],
              "boxPriceDetail" : 4388.88
            },
            {
              "boxType" : "box2",
              "boxUserCode" : [
                "uc005",
                "uc0010"
              ],
              "boxPriceDetail" : 5388.88
            }
          ],
          "boostValue" : 1.2
        }
      }
    ]
  }
}

可以看到,我们设置了 1 个词条,apple 与 test 之间间隔一个词条,故能查询到。

 

Match phrase prefix query

 

返回文档包含给定查询条件的文档,文档中必须包含给定条件的内容,且是按照 prefix 来进行匹配的,如 "apple goods test" ,商品名称包含 apple goods test 的数据将被查询到返回。

 

新增一条测试数据

 

POST my_goods/_bulk
{"index":{"_id":13}}
{"goodsName":"apple and goods product ","skuCode":"skuCode3","brandName":"美国苹果","closeUserCode":["0"],"channelType":"cloudPlatform","shopCode":"sc00001","publicPrice":"8388.88","groupPrice":null,"boxPrice":[{"boxType":"box1","boxUserCode":["htd003","uc004"],"boxPriceDetail":4388.88},{"boxType":"box2","boxUserCode":["uc005","uc0010"],"boxPriceDetail":5388.88}],"boostValue":1.2}
{"index":{"_id":21}}
{"goodsName":"apple goods test","skuCode":"skuCode3","brandName":"美国苹果","closeUserCode":["0"],"channelType":"cloudPlatform","shopCode":"sc00001","publicPrice":"8388.88","groupPrice":null,"boxPrice":[{"boxType":"box1","boxUserCode":["htd003","uc004"],"boxPriceDetail":4388.88},{"boxType":"box2","boxUserCode":["uc005","uc0010"],"boxPriceDetail":5388.88}],"boostValue":1.2}
#只返回goodsName : apple goods test的数据
GET /my_goods/_search
{
  "query": {
    "match_phrase_prefix": {
      "goodsName": "apple goods t"
    }
  }
}

总结比较 match 这四种查询

image.png


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(14) https://developer.aliyun.com/article/1231056



相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
缓存 PHP Nacos
nacos常见问题之服务升级后nacos控制台看到都是不可用重启nacos后恢复如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
822 4
|
11月前
|
数据采集 数据安全/隐私保护 开发者
非阻塞 I/O:异步编程提升 Python 应用速度
非阻塞 I/O:异步编程提升 Python 应用速度
|
10月前
|
存储 安全 搜索推荐
几种常见教育视频点播系统建设方案和成本分享
教育行业视频点播系统建设方案分享,点量软件团队专注视频点播十五年,无论是局域网、公网点播视频建设均可。终端可应用于手机、电视盒、智能电视等多种设备,在不同的设备中都可以流畅播放。
282 3
几种常见教育视频点播系统建设方案和成本分享
|
NoSQL Redis 监控
redis-shake数据同步&迁移&备份导入导出工具使用介绍
redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。
71651 4
redis-shake数据同步&迁移&备份导入导出工具使用介绍
|
存储 SQL 关系型数据库
MySQL学习笔记-主键索引和二级索引
MySQL学习笔记-主键索引和二级索引
216 0
|
存储 关系型数据库 MySQL
简述 MySQL 的主键 PRIMARY KEY 和唯一键 UNIQUE INDEX
简述 MySQL 的主键 PRIMARY KEY 和唯一键 UNIQUE INDEX
687 0
简述 MySQL 的主键 PRIMARY KEY 和唯一键 UNIQUE INDEX
|
SQL 关系型数据库 MySQL
MYSQL因IN的范围太大导致索引失效问题
MYSQL因IN的范围太大导致索引失效问题
679 0
|
NoSQL Linux API
一文搞懂 Redis高性能之IO多路复用
相信大家在面试过程中经常会被问到:“单线程的Redis为啥这么快?” 哈哈,反正我在面试时候经常会问候选人这个问题,这个问题其实是对redis内部机制的一个考察,可以牵扯出好多涉及底层深入原理的一些列问题。
一文搞懂 Redis高性能之IO多路复用
|
存储 缓存 自然语言处理
Search 通过 Kibana— Elastic Stack 实战手册
在 TO B 行业,对商品的搜索展示,是有一定业务要求的,例如:存在合作关系的买家和供应商才能看到供应商店铺的商品,不存在合作关系的买家则不展示商品。另外,有些商品对客户甲展示一种价格,对客户乙则展示另外一种价格,从而区分不同的会员、分组对商品价格的区别。
325 0
Search 通过 Kibana— Elastic Stack 实战手册