当前位置: 首页 > 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。
    注意事项:由于?只能匹配一个字符,因此在使用时需要确保匹配模式中的?数量与要匹配的字符数量一致。
http://www.lryc.cn/news/410071.html

相关文章:

  • 【人工智能】穿越科技迷雾:解锁人工智能、机器学习与深度学习的奥秘之旅
  • Nginx服务 rewrite、proxy_pass 用rewrite去除URL中的特定参数
  • RocketMQ事务消息机制原理
  • 【C++】选择结构- 嵌套if语句
  • scrapy解决管道阻塞问题采用threadpool库线程池+twisted同步语法异步编程
  • Axure RP:打造动态交互的大屏可视化设计利器
  • “八股文”在实际工作中是助力、阻力还是空谈
  • 项目开发:@ControllerAdvice注解的基本应用
  • Jmeter三种方式获取数组中多个数据并将其当做下个接口参数入参【附带JSON提取器和CSV格式化】
  • C++入门基础:C++中的循环语句
  • VUE 基础(二)
  • VMware Cloud Foundation ESXi 主机
  • PyTorch深度学习快速入门(下)
  • 轻松入门Linux—CentOS,直接拿捏 —/— <1>
  • pandas安装以及导入CSV
  • 新能源车浪潮来袭,同时存在高压低压系统,如何准确进行高低压布线间距EMC分析?
  • QUIC 协议
  • 【软件测试】--接口测试
  • 【前端】上传视频,截取第一帧图片
  • Redis-GEO数据结构的基本用法
  • 【Linux C | 网络编程】进程池大文件传输的实现详解(三)
  • Mac如何通过SSH连接Github
  • 成就巴西休闲游戏如何借助Google谷歌广告投放优势
  • 利用python检查磁盘空间使用情况
  • 卷积神经网络(五)---图像增强的方法
  • 矩阵常见分解算法及其在SLAM中的应用
  • 【排序】快速排序详解
  • 贪心算法总结(2)
  • 弘景光电:技术实力与创新驱动并进
  • 2024年7月23日~2024年7月29日周报