一日一技:在ES中如何使用通配符搜索keyword字段

简介: 一日一技:在ES中如何使用通配符搜索keyword字段

摄影:产品经理游玩:kingname & 产品经理

我们知道,在 ES 中,字段类型如果是keyword,那么在搜索的时候一般只能整体搜索,不支持搜索部分内容。例如,有一个字段叫做{"name": "我是青南"},当我使用{"match": {"name": "我是青南"}}的时候可以正常搜索出来。但是当我使用{"match": {"name": "青南"}}时,就什么都搜索不到。

但是,ES 支持使用通配符来进行搜索,于是我们可以把 DSL 搜索语句构造为:

{"wildcard": {"name": "*青南*"}}

这样就能正常搜索出结果了。

下面给出一段可以正常使用的elasticsearch-py的代码,用于编写 DSL 语句在 Elasticsearch 中搜索数据:

from elasticsearch import Elasticsearch, helpers
es = Elasticsearch([{'host': 'xx.xx.xx.xx', 'port': 1234}], timeout=30)
body = {
        "query": {
            "bool": {
                "filter": [
                    {
                      "range": {
                          "ts": {
                              "gte": '2019-11-01 00:00:00',
                              "lt": '2019-11-29 00:00:00'
                          }
                      },
                    }
                ],
                'must': [
                    {'match_phrase': {'source': 'baidu'}},
                    {'wildcard': {'title': '*青南*'}}
                ],
                "must_not": [
                     {'wildcard': {'title': {'value': '*大神*'}}}
                ],
            }
        },
        }
res = es.search(index='spider_data', body=body)
print(res)

这段代码的意思是说:

搜索 ts 时间范围在2019-11-01 00:00:002019-11-29 00:00:00,并且source字段为baidutitle字段包含青南但是不包含大神的数据。

但需要注意的是,使用通配符搜索,会对 ES 集群造成比较大的压力,特别是*号在前时,会有一定的性能损耗。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
SQL 运维 关系型数据库
在OceanBase数据库中,你可以通过以下几个途径来查看慢SQL和等待事件
在OceanBase数据库中,你可以通过以下几个途径来查看慢SQL和等待事件
796 1
|
自然语言处理 索引
ES 匹配多个搜索条件和精确查询
ES 匹配多个搜索条件和精确查询
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
2374 9
|
7月前
|
人工智能 自然语言处理 API
硅基流动入驻阿里云云市场,核心API服务将全面接入阿里云百炼平台💐
2025年6月18日,AI Infra企业硅基流动与阿里云达成战略合作,加入“繁花计划”并入驻云市场。其大模型推理平台SiliconCloud核心API将接入阿里云百炼平台,依托灵骏智能计算集群为客户提供高效服务。作为国内领先的MaaS平台,SiliconCloud已集成百余款开源大模型,服务600万用户及众多企业。双方将在算力协同、行业解决方案等领域深化合作,推动AI生态发展。
891 0
|
自然语言处理 索引
ES中如何对text字段进行精确匹配
ES中如何对text字段进行精确匹配
1509 0
|
Linux 数据库
Linux安装达梦数据库达梦数据
Linux安装达梦数据库达梦数据
210 0
|
Unix Linux
Cron介绍,以及常见的cron表达式
Cron介绍,以及常见的cron表达式
1244 0
|
JavaScript 数据可视化 前端开发
如何安装和配置 ECharts
如何安装和配置 ECharts
865 1
|
存储 安全 算法
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
【C++ 17 包裹类 泛型容器 std::any】深入理解与应用C++ std::any:从泛型编程到多态设计
1756 1
|
存储 Java 网络架构
Spring Data Elasticsearch基础入门详解
Spring Data Elasticsearch基础入门详解
860 0