带你读《Elastic Stack 实战手册》之34:——3.4.2.17.3.全文搜索/精确搜索(1)

简介: 带你读《Elastic Stack 实战手册》之34:——3.4.2.17.3.全文搜索/精确搜索(1)

3.4.2.17.3.全文搜索/精确搜索


创作人:金端

审稿人:欧阳楚才

 

在 ES 的文本搜索中,精确搜索和全文搜索是使用 ES 进行搜索时基本且常见的一个话题。

这里先重申一下 keyword 和 text 类型的概念:

 

l keyword:建立索引不分词,可以用来过滤、排序和聚合。可以满足电子邮箱地址、主机名、状态码、邮政编码和标签等数据的要求。

l text:存储数据默认进行分词,分词机制之后 ES 允许检索到该文本切分而成的词语,但是text类型的数据不能用来过滤、排序和聚合等操作。用来索引长文本,例如电子邮件主体部分或者一款产品的介绍。

 

在精确搜索和全文搜索的内容中,主要用于存储文本的字段类型就是 keyword 和 text。

 

抛开复杂的理论,我们先来了解一下 ES 对文本内容搜索基本的两个方法: term 和 match 。

 

一、初识 term 与 match

 

先创建一个测试索引并放入两条数据。


PUT my-index-000001
{
  "mappings": {
    "properties": {
      "full_text": { "type": "text" }
    }
  }
}
PUT my-index-000001/_doc/1
{
  "full_text":   "quick brown foxes!"
}
PUT my-index-000001/_doc/2
{
  "full_text":   "Quick Foxes Brown !"
}

我们先使用 term 查询搜索一下关键词 foxes 。


GET my-index-000001/_search?pretty
{
  "query": {
    "term": {
      "full_text": "foxes"
    }
  }
}


返回结果为:


{
  ···
    "hits" : [
      {
        "_index" : "my-index-000001",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 0.18232156,
        "_source" : {
          "full_text" : "quick brown foxes!"
        }
      },
      {
        "_index" : "my-index-000001",
        "_type" : "_doc",
        "_id" : "2",
        "_score" : 0.18232156,
        "_source" : {
          "full_text" : "Quick Foxes Brown !"
        }
      }
    ]
  }
}

可以发现两条记录都命中了。我们再试试使用 foxes 后添加一个感叹号形成 "foxes!" 搜索一下。

 

GET my-index-000001/_search?pretty
{
  "query": {
    "term": {
      "full_text": "foxes!"
    }
  }
}

返回结果为空。


{
  ···
    "hits" : [ ]
  }
}

我们再使用 "brown foxes" 这两个关键词试验一下。


GET my-index-000001/_search?pretty
{
  "query": {
    "term": {
      "full_text": "brown foxes"
    }
  }
}

会发现返回结果也是为空。

 


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.3.全文搜索/精确搜索(2) https://developer.aliyun.com/article/1229942


相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
17天前
|
存储 自然语言处理 测试技术
一行代码,让 Elasticsearch 集群瞬间雪崩——5000W 数据压测下的性能避坑全攻略
本文深入剖析 Elasticsearch 中模糊查询的三大陷阱及性能优化方案。通过5000 万级数据量下做了高压测试,用真实数据复刻事故现场,助力开发者规避“查询雪崩”,为您的业务保驾护航。
726 35
|
弹性计算 智能网卡 网络安全
阿里云云网络演进
本文主要介绍阿里云云网络演进进程。
1307 1
|
10月前
|
人工智能 Cloud Native 虚拟化
从铜线到云端:网络技术的跨越与未来趋势
本文围绕物理网络和云网络基础知识科普进行展开,最后浅谈在AI大模型浪潮下云网络的演进方向。
603 130
|
人工智能 Python
蓝桥杯练习题(四):Python组之历届试题三十题
关于蓝桥杯Python组历届试题的三十个练习题的总结,包括题目描述、输入输出格式、样例输入输出以及部分题目的解题思路和代码实现。
498 0
蓝桥杯练习题(四):Python组之历届试题三十题
|
9月前
|
关系型数据库 Linux 数据库
PostgreSQL 入门指南:安装、配置与基本命令
本文从零开始,详细介绍如何在 Windows、Linux 和 macOS 上安装和配置 PostgreSQL,涵盖30+个实操代码示例。内容包括安装步骤、配置远程访问和用户权限、基础数据库操作命令(如创建表、插入和查询数据),以及常见问题的解决方案。通过学习,你将掌握 PostgreSQL 的基本使用方法,并为后续深入学习打下坚实基础。
10708 1
|
10月前
|
数据采集 机器学习/深度学习 算法
探索数据科学家的日常:揭秘职业背后的故事
探索数据科学家的日常:揭秘职业背后的故事
181 10
|
10月前
|
存储 弹性计算 运维
海量日志接入 Elasticsearch Serverless 应用降本70%以上
本文将探讨在日志场景下,使用阿里云Elasticsearch Serverless相较于基于ECS自建Elasticsearch集群的成本与性能优势,展示如何通过Serverless架构实现高达 70%以上的成本节约。
550 0
|
运维 监控 Devops
DevOps文化:持续交付与持续反馈的文化构建与实践
【10月更文挑战第26天】DevOps作为一种将开发与运维紧密结合的文化和实践,通过促进团队协作与自动化流程,实现快速、稳定且高质量的软件交付。本文重点探讨持续交付与持续反馈两大支柱,通过实际案例和示例代码,展示其构建与实践过程。例如,使用Jenkins构建CI/CD流水线,通过Grafana和Prometheus实现实时监控,确保软件质量和快速响应。
186 1
|
负载均衡 安全 网络虚拟化
CCE集群VPC网络模式下几种访问场景
【8月更文挑战第13天】在CCE(Cloud Container Engine)集群的VPC网络模式下,支持多样化的访问场景:容器应用可直接利用VPC访问外部资源;通过ELB负载均衡或VPN/专线配置,实现外部网络对容器应用的安全访问;容器间通过内部IP或服务发现机制相互通信;跨VPC访问则可通过VPC对等连接或云连接服务实现。这些方案确保了应用内外部通信的安全与高效。
611 3
|
应用服务中间件 API 网络安全
运维笔记:宿主机转发实现多容器复用CA证书
运维笔记:宿主机转发实现多容器复用CA证书
260 4

热门文章

最新文章