首页 > 其他分享 >ES查询

ES查询

时间:2023-12-25 15:35:40浏览次数:25  
标签:term 匹配 模糊 通配符 查询 Query ES

1、精准查询

要实现精确查询,你可以使用 Elasticsearch 的 term 查询。term 查询将按照精确值进行搜索,因此可以用来实现精确查询。

以下是一个示例:

假设你有一个名为 "users" 的索引,其中包含一个名为 "name" 的字段,你想要搜索名为 "John" 的用户。你可以使用以下查询:

GET /users/_search  
{  
  "query": {  
    "term": {  
      "name": "John"  
    }  
  }  
}

此查询将返回所有名为 "John" 的用户。请注意,term 查询是大小写敏感的,因此它会将 "John" 与 "john" 视为不同的值。

如果你希望实现大小写不敏感的精确查询,你可以使用 keyword 字段。例如:

GET /users/_search  
{  
  "query": {  
    "term": {  
      "name.keyword": "john"  
    }  
  }  
}

2、模糊查询

在 Elasticsearch 中,可以使用多种方法实现模糊查询。以下是一些常用的模糊查询实现方式:

  1. 通配符查询(Wildcard Query):通配符查询可以使用通配符符号(和?)进行匹配。代表零个或多个字符,?代表单个字符。例如,“appl*”可以匹配“apple”和“application”等单词。通配符查询虽然简单,但在处理大数据时性能相对较差。
  2. 正则表达式查询(Regexp Query):正则表达式查询允许你使用正则表达式来匹配文档中的字符串。例如,使用正则表达式“^a.*e$”可以匹配以“a”开头,以“e”结尾的字符串。
  3. 模糊查询(Fuzzy Query):模糊查询允许你在一定范围内进行模糊匹配。它使用编辑距离算法来计算字符串之间的相似度。你可以通过设置“prefix_length”参数来指定模糊匹配的起始位置。
  4. 跨度查询(Span Query):跨度查询用于在两个连续的文本之间进行匹配。它可以在两个关键词之间进行匹配,或者在一段文本中查找重复的子串。

这些是 Elasticsearch 中常用的模糊查询方法,你可以根据具体需求选择适合的方法进行模糊匹配。

举例:

2.1 Wildcard Query

假设你有一个名为 "users" 的索引,其中包含一个名为 "username" 的字段,你想要搜索以 "ap" 开头的用户名。你可以使用通配符查询来实现这个匹配:

在这个例子中,通配符查询使用 "" 表示任意字符序列,因此 "ap" 可以匹配以 "ap" 开头的任意用户名,例如 "app"、"apple"、"appl" 等。

需要注意的是,通配符查询在大数据集上可能效率较低,因为它们需要遍历索引中的每个文档进行匹配。因此,在处理大量数据时,建议使用其他查询方式,如正则表达式查询或模糊查询,以提高查询性能。

GET /users/_search  
{  
  "query": {  
    "wildcard": {  
      "username": "ap*"  
    }  
  }  
}

 2.2 Regexp Query

 

  2.3 模糊查询(Fuzzy Query)

 2.4  跨度查询(Span Query)

 

 

标签:term,匹配,模糊,通配符,查询,Query,ES
From: https://www.cnblogs.com/SunshineKimi/p/17926177.html

相关文章

  • 【flink番外篇】5、flink的window(介绍、分类、函数及Tumbling、Sliding、session窗口
    Flink系列文章一、Flink专栏Flink专栏系统介绍某一知识点,并辅以具体的示例进行说明。1、Flink部署系列本部分介绍Flink的部署、配置相关基础内容。2、Flink基础系列本部分介绍Flink的基础部分,比如术语、架构、编程模型、编程指南、基本的datastreamapi用法、四大基......
  • 无涯教程-PostgreSQL - Locks(锁)
    排他锁或写锁可防止用户修改行或整个表,然后,在事务期间,由UPDATE和DELETE修改的行将被自动锁定,这样可以防止其他用户更改行,直到事务被提交或回滚为止。用户必须等待其他用户的唯一时间是他们尝试修改同一行时,如果他们修改不同的行,则无需等待,SELECT查询永远不必等待。数据库自动......
  • Marvelous Designer 12:让服装设计变得栩栩如生
    MarvelousDesigner12是一款功能强大的三维服装设计软件,它为设计师提供了一个完整的解决方案,从草图和设计到裁剪和缝制。点击获取MarvelousDesigner12首先,MarvelousDesigner12具有强大的3D建模功能,可以创建高质量的3D服装模型。该软件提供了丰富的3D工具和功能,包括建模、......
  • # TypeScript 类型声明、数据类型
    TypeScript类型声明、数据类型好烦数据类型JavaScript的类型分为两种:原始数据类型(Primitivedatatypes)和对象类型【引用数据类型】(Objecttypes)。原始数据类型包括:布尔值、数值、字符串、null、undefined以及ES6中的新类型Symbol和ES10中的新类型BigInt。类型声......
  • # 1. TypeScript 简介
    1.TypeScript简介烦教程地址教程资源:https://ts.xcatliu.com/introduction/what-is-typescript.html#link-1中文官网:https://www.typescriptlang.org/TypeScript特点JS的超集包含JS的所有元素能够运行JS代码支持ES语法是一种开源、跨平台的编程语言编译器......
  • jmeter 压力机端口不够用Response code:Non HTTP response code: java.net.NoRouteToH
    四  压测机异常,修改配置后重试Responsecode:NonHTTPresponsecode:java.net.NoRouteToHostException原因:Jmeter发压机的端口不够用解决办法:1.netstat|grepTIME_WAIT|wc-l查看目前处在TIME_WAIT状态的值大不大2.检查系统sysctl中配置项:(/etc/sysctl.conf)net.ipv4.t......
  • 接口自动化测试复习巩固第二天,管理员后端验证和接口抓包+requests实现
    接口自动化测试第二天,需要用到的第三方库有os,openpyxl,json,pytest,requests首选我们今天的目标是写出一个测试登录用例的脚本,这里我用的是分层设计,整个框架暂时被分为工具层,测试数据层,用例层。工具层:这里我会先放目前需要用到的脚本测试数据层:用例执行时需要的测试数据,我会以exce......
  • :联塑LESSO、JSPES品升、美尔固MIERGU、索邦管Suban、龙胜管LS、亚通Aton、伟星vasen、
    写文章  最新水管品牌十大排行榜发布(Maigoo)买购网MAIGOO知识榜品牌榜查排行上买购网​关注 水管管道什么牌子好?经专业评测的2023年水管管道十大品牌名单发布啦!居前十的有:联塑LESSO、JSPES品升、美尔固MIERGU、索邦管Suban、龙胜管LS、亚通......
  • 教你几个部署多个nginx-ingress的注意事项
    本文分享自华为云社区《nginx-ingress工作原理以及多nginx-ingress部署注意事项》,作者:可以交个朋友。一、nginx-ingress工作原理nginx-ingress对应的容器中有两个核心组件:nginx-ingress-controller和nginx。其中nginx-ingress-controller负责list-watchkube-apiserver监听ingr......
  • AtCoder Regular Contest 168 E Subsegments with Large Sums
    洛谷传送门AtCoder传送门尝试二分答案,问题变为要求恰好选\(x\)段\(\ges\),最大化选的段数。发现我们不是很会算段数的\(\max\),因为要求段不重不漏地覆盖\([1,n]\)。考虑给每个\(\ges\)段\([l,r]\)一个\(r-l\)的代价,于是变成了算代价的\(\min\)。此时不再要求......