当前位置: 首页 > news >正文

Elasticsearch模糊查询之Wildcard

{“wildcard” : { “LPR.keyword” : { “wildcard” : “${Keyword}”} }},你的示例中使用了 wildcard 查询,它适用于模糊搜索,允许使用通配符(* 和 ?)来匹配字段值。你使用了 keyword 子字段来确保精确匹配,这是一个常见的做法,因为 keyword 字段不会进行分词,可以直接用于通配符查询。
示例解释
假设你的索引中有一个字段 LPR,它被定义为一个 text 字段,同时有一个 keyword 子字段用于精确匹配和通配符查询:
映射定义示例

PUT /my_index
{"mappings": {"properties": {"LPR": {"type": "text","fields": {"keyword": {"type": "keyword"}}}}}
}

wildcard 查询示例
你想要在 LPR.keyword 字段中进行通配符查询,以下是查询的 JSON 格式:

GET /my_index/_search
{"query": {"wildcard": {"LPR.keyword": {"wildcard": "${Keyword}"}}}
}

wildcard 查询用于匹配符合通配符模式的文档。
LPR.keyword 指定要在 LPR 字段的 keyword 子字段上进行查询。
${Keyword} 是一个变量,代表你要搜索的通配符模式(例如,abc,abc*,a*c,等)。
示例查询
假设你想要查找所有在 LPR 字段中包含 “abc” 的文档,你可以将 ${Keyword} 替换为实际的通配符模式:

GET /my_index/_search
{"query": {"wildcard": {"LPR.keyword": {"wildcard": "*abc*"}}}
}

详细解释
abc”:这个通配符模式表示匹配所有包含 “abc” 的文档,无论 “abc” 前后有多少字符。
使用注意事项
性能:通配符查询,特别是以 * 开头的查询(例如 “abc”),可能会很慢,因为它们需要扫描大量文档。对于大数据集,最好避免这种查询,或者使用其他索引优化策略。
大小写敏感:keyword 字段是大小写敏感的。如果需要大小写不敏感的匹配,可以考虑在索引时标准化数据(例如,转换为小写)。

Wildcard(通配符)中的*和?区别

Wildcard(通配符)中的*和?在功能和使用上存在明显的区别,主要体现在它们所能匹配的字符数量和范围上。

  1. *(星号)
    功能:在通配符中代表零个、一个或多个字符。这意味着它可以匹配任意长度的字符串,包括空字符串。
    使用场景:常用于模糊搜索,特别是在需要匹配多个字符或者不确定具体字符数量的情况下。例如,在文件名匹配中,.txt可以匹配所有以.txt结尾的文件,无论其前缀是什么。
    注意事项:由于可以匹配任意长度的字符串,包括零个字符,因此在某些情况下可能会导致意外的匹配结果。因此,在使用时需要特别注意匹配模式的精确性。
  2. ?(问号)
    功能:?在通配符中代表任意一个字符。这意味着它只能匹配一个字符,无论这个字符是什么。
    使用场景:?通常用于需要精确匹配一个字符但不确定这个字符具体是什么的情况。例如,在文件名匹配中,report?.txt可以匹配report1.txt、reportA.txt等,但不会匹配report.txt或reporttwo.txt。
    注意事项:由于?只能匹配一个字符,因此在使用时需要确保匹配模式中的?数量与要匹配的字符数量一致。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Unity横板动作游戏 - 素材导入和整理
  • 月薪竟然高达60k,AI大模型凭什么?
  • 手摸手教你前端和后端是如何实现导出 Excel 的?
  • Python 爬虫项目实战(一):破解网易云 VIP 免费下载付费歌曲
  • uniapp h5支付(支付宝和微信支付)
  • [ Socket学习 ] 第一章:网络基础知识
  • 常用排序算法的实现与介绍
  • Pyinstaller打包OSError: could not get source code【终极解决】
  • [Meachines] [Easy] Admirer Adminer远程Mysql反向+Python三方库函数劫持权限提升
  • C++面试---小米
  • 食源送系统项目的测试
  • 服务重启脚本
  • 从实现第一个ArkTs应用开始入门
  • C#中ToString()在windows和linux的差异
  • MySQLl的存储引擎
  • 【EOS】Cleos基础
  • CEF与代理
  • Java-详解HashMap
  • JSONP原理
  • JS题目及答案整理
  • Laravel核心解读--Facades
  • mongo索引构建
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Vue 2.3、2.4 知识点小结
  • 服务器从安装到部署全过程(二)
  • 高性能JavaScript阅读简记(三)
  • 关于 Cirru Editor 存储格式
  • 记一次和乔布斯合作最难忘的经历
  • 经典排序算法及其 Java 实现
  • 区块链将重新定义世界
  • 我建了一个叫Hello World的项目
  • 转载:[译] 内容加速黑科技趣谈
  • 《码出高效》学习笔记与书中错误记录
  • C# - 为值类型重定义相等性
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​比特币大跌的 2 个原因
  • ​补​充​经​纬​恒​润​一​面​
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 达梦数据库知识点
  • # 利刃出鞘_Tomcat 核心原理解析(二)
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • (1)bark-ml
  • (2015)JS ES6 必知的十个 特性
  • (6)STL算法之转换
  • (C++)八皇后问题
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (day18) leetcode 204.计数质数
  • (多级缓存)多级缓存
  • (二)Eureka服务搭建,服务注册,服务发现
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (图)IntelliTrace Tools 跟踪云端程序
  • (转载)深入super,看Python如何解决钻石继承难题
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径