首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Elasticsearch 6.8中,模糊搜索(如MySQL中的'%aaa%‘)的最佳实践是什么

在Elasticsearch 6.8中,模糊搜索(类似于MySQL中的'%aaa%')可以通过使用match查询或query_string查询来实现。以下是一些最佳实践:

基础概念

模糊搜索允许用户在搜索时容忍一定程度的拼写错误或部分匹配。Elasticsearch通过使用Levenshtein距离或其他模糊匹配算法来实现这一点。

相关优势

  1. 灵活性:模糊搜索可以提高搜索的灵活性,允许用户输入近似词或拼写错误。
  2. 用户体验:提升用户体验,减少因拼写错误导致的搜索失败。

类型

  1. match查询:适用于全文搜索,支持模糊匹配。
  2. query_string查询:更灵活,支持复杂的查询语法,包括模糊匹配。

应用场景

  • 搜索引擎
  • 日志分析
  • 内容管理系统

示例代码

以下是使用match查询进行模糊搜索的示例:

代码语言:txt
复制
{
  "query": {
    "match": {
      "field_name": {
        "query": "aaa",
        "fuzziness": "AUTO"
      }
    }
  }
}

在这个示例中,field_name是要搜索的字段,"fuzziness": "AUTO"表示Elasticsearch会自动确定允许的最大编辑距离。

常见问题及解决方法

1. 模糊搜索性能问题

原因:模糊搜索可能会消耗大量资源,尤其是在大数据集上。 解决方法

  • 使用fuzziness参数限制编辑距离。
  • 在索引时使用ngramedge_ngram分词器来预处理数据。

2. 模糊搜索结果不准确

原因:模糊搜索可能会返回不相关的结果。 解决方法

  • 使用boost参数调整相关字段的权重。
  • 结合其他查询类型(如term查询)来提高准确性。

参考链接

通过以上方法和建议,您可以在Elasticsearch 6.8中实现高效的模糊搜索。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ElasticSearch搜索引擎在SpringBoot中的实践

:9200/这个地址(该地址需要配到springboot项目中去) --- Spring工程创建 这部分没有特殊要交代的,但有几个注意点一定要当心 注意在新建项目时记得勾选web和NoSQL中的Elasticsearch...依赖,来张图说明一下吧: [创建工程时勾选Nosql中的es依赖选项] 项目自动生成以后pom.xml中会自动添加spring-boot-starter-data-elasticsearch的依赖:...id=5&name=中国南边好像没有叫带京字的城市了 数据插入效果如下(使用可视化插件elasticsearch-head观看): [数据插入效果] 我们来做一下搜索的测试:例如我要搜索关键字“南京”...name=南京 搜索结果如下: [关键字“南京”的搜索结果] 刚才插入的5条记录中包含关键字“南京”的四条记录均被搜索出来了!...--- 后记 作者更多的原创文章在云加社区 初探Kotlin+SpringBoot联合编程 Spring Boot日志框架实践 SpringBoot优雅编码之:Lombok加持 --- [CodeSheep

2.8K110

ElasticSearch搜索引擎在SpringBoot中的实践

:9200/这个地址(该地址需要配到springboot项目中去) ---- Spring工程创建 这部分没有特殊要交代的,但有几个注意点一定要当心 注意在新建项目时记得勾选web和NoSQL中的Elasticsearch...创建工程时勾选Nosql中的es依赖选项 项目自动生成以后pom.xml中会自动添加spring-boot-starter-data-elasticsearch的依赖: ...数据插入效果 我们来做一下搜索的测试:例如我要搜索关键字“南京” 我们在浏览器中输入: http://localhost:6325/entityController/search?...name=南京 搜索结果如下: ? 关键字“南京”的搜索结果 刚才插入的5条记录中包含关键字“南京”的四条记录均被搜索出来了!...当然这里用的是standard分词方式,将每个中文都作为了一个term,凡是包含“南”、“京”关键字的记录都被搜索了出来,只是评分不同而已,当然还有其他的一些分词方式,此时需要其他分词插件的支持,此处暂不涉及

2.2K50
  • ES深刻剖析技术文章

    非结构化数据:指不定长或无固定格式的数据,如邮件,word文档等 半结构化数据,如XML,HTML等 非结构化数据又一种叫法叫全文数据。 对结构化数据的搜索:如对数据库的搜索,用SQL语句。...再如对元数据的搜索,如利用windows搜索对文件名,类型,修改时间进行搜索等。...对非结构化数据的搜索:如利用windows的搜索也可以搜索文件内容,Linux下的grep命令,再如用Google和百度可以搜索大量内容数据。...如利用windows的搜索也可以搜索文件内容,只是相当的慢。如果你有一个80G硬盘,如果想在上面找到一个内容包含某字符串的文件,不花他几个小时,怕是做不到。 Linux下的grep命令也是这一种方式。...一旦数据在Elasticsearch中,您就可以运行搜索和聚合来挖掘您感兴趣的任何信息。 您运行价格警报平台,允许精通价格的客户指定一条规则。。

    10810

    互联网大厂年度总结1000+道高频面试题(附答案解析)冲刺2021

    Elasticsearch 索引文档的过程 6、详细描述一下 Elasticsearch 搜索的过程?...75、Java 中,ByteBuffer 与 StringBuffer 有什么区别?(答案) Java 最佳实践的面试问题 76、Java 中,编写多线程程序的时候你会遵循哪些最佳实践?...77、说出几点 Java 中使用 Collections 的最佳实践 78、说出至少 5 点在 Java 中使用线程的最佳实践。...79、说出 5 条 IO 的最佳实践(答案) 80、列出 5 个应该遵循的 JDBC 最佳实践 81、说出几条 Java 中方法重载的最佳实践?...4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和微服务架构有什么区别? 8、在使用微服务架构时,您面临哪些挑战?

    4.8K00

    2021 Java面试题大全(整理版)1000+面试题附答案详解,最全面详细,看完稳了!

    Elasticsearch 索引文档的过程 6、详细描述一下 Elasticsearch 搜索的过程?...75、Java 中,ByteBuffer 与 StringBuffer 有什么区别?(答案) Java 最佳实践的面试问题 76、Java 中,编写多线程程序的时候你会遵循哪些最佳实践?...77、说出几点 Java 中使用 Collections 的最佳实践 78、说出至少 5 点在 Java 中使用线程的最佳实践。...79、说出 5 条 IO 的最佳实践(答案) 80、列出 5 个应该遵循的 JDBC 最佳实践 81、说出几条 Java 中方法重载的最佳实践?...4、设计微服务的最佳实践是什么? 5、微服务架构如何运作? 6、微服务架构的优缺点是什么? 7、单片,SOA 和微服务架构有什么区别? 8、在使用微服务架构时,您面临哪些挑战?

    2.8K20

    死磕 Elasticsearch 方法论:普通程序员高效精进的 10 大狠招!

    MySQL 中定义表结构、设定字段类型等价于 ES 中的 Mapping。举例说明,在一个关系型数据库里面,Schema 定义了表、每个表的字段,还有表和字段之间的关系。...如下是传统的关系型数据库(如Oracle、MySQL)、非关系型的数据库(如 Mongo)所做不到的: 1.传统的关系型数据库虽然能支持类型“like 待检索词”模糊语句匹配,但无法进行全文检索(分词检索...小结 通过以上的介绍,我们对 ELK Stack 中的核心成员:Elasticsearch、Logstash、Kibana、Beats 是什么以及能干什么有了相对一致的认知。...在 Elasticsearch5.X 之前的版本中,Kibana 和 Logstash 各有自己的一套版本管理体系。如 Kibana4.X 对应 Elasticsearch2.3.X。...在 Google 输入关键词:elasticsearch ALLOCATION_FAILED,Google 搜索就能很快定位到集群状态为红色的解决方案。

    1.8K40

    Mysql全文索引实现模糊查询

    导语 基本上所有的产品都离不开模糊搜索,无论是C端的社交产品、或者B端的一些SaaS服务。...解决模糊搜索,我们最典型的解决方案是大家都可以想到的,使用SQL的like功能来实现,如下: SELECT * FROM t_demo WHERE col_name LIKE '%aaa%'; 问题场景...所以基本上所有的生产环境的DB都会关闭LIKE命令,取而代之的是通过mysql->binlog->canal->elasticsearch这种方式来实现搜索功能。...全文索引 全文索引,在MyISAM中早已支持,但是现在基本上大家用的都是InnoDB,而InnoDB对于FULLTEXT索引的支持是从MySQL5.6新引入的特性。...在MySQL中,使用全局变量ngram_token_size来配置ngram中n的大小,它的取值范围是1到10,默认值是2。

    13.4K41

    RedisJson 横空出世,比 ES 快7 倍,惊爆了

    如这些 WRITE 基准测试图表所示,由于这种“设计”限制,ElasticSearch 付出了巨大的代价。...尽管如此,YCSB 工作负载允许您指定搜索/读取/更新之间的比率以满足您的要求。 “搜索性能”可以指不同类型的搜索,例如“匹配查询搜索”、“分面搜索”、“模糊搜索”等等。...在每个测试变体中,我们添加了 10% 的写入,以按相同的比例混合和减少搜索和读取百分比。...在下面的读取和更新图表中,我们可以看到 RedisJSON* 在所有延迟范围内表现最佳,其次是 MongoDB 和 ElasticSearch。...上面的提及一部分,面试者就基本对你之前的实践或者运维经验有所评估了。 ◆ 2、elasticsearch 的倒排索引是什么 面试官:想了解你对基础概念的认知。 解答:通俗解释一下就可以。

    86920

    一条慢sql引发的思考

    模糊查询会引发什么问题?(索引失效) 带着问题往后走~ 2.3 查询分析和优化(重点) 分析慢sql查询执行计划,确认是否使用了索引和最佳执行路径。...你可能已经有了熟练的数据库管理员和开发团队,他们对 MySQL 的工作原理和最佳实践非常熟悉。 技术迁移成本低:转向 Elasticsearch 可能需要一定的学习和迁移成本。...SELECT * FROM table_name WHERE non_indexed_column = 'value'; LIKE 查询的模糊匹配:如果在 LIKE 查询中使用通配符在搜索模式的开头,...EXPLAIN返回语句中使用的每个表的一行信息 SELECT。它按照 MySQL 在处理语句时读取表的顺序列出了输出中的表。...这意味着MySQL从第一个表中读取一行,然后在第二个表中找到匹配的行,然后在第三个表中找到匹配的行,依此类推。当所有表都处理完毕后,MySQL 输出选定的列并回溯表列表,直到找到有更多匹配行的表。

    35310

    【Elasticsearch】初识elasticsearch

    例如: 在GitHub搜索代码 在电商网站搜索商品 在百度搜索答案 在打车软件搜索附近的车 1.1.2.ELK技术栈 elasticsearch结合kibana、Logstash...但如果是基于title做模糊查询,只能是逐行扫描数据,流程如下: 1)用户搜索数据,条件是title符合"%手机%" 2)逐行获取数据,比如id为1的数据 3)判断数据中的title是否符合用户搜索条件...倒排索引: 优点: 根据词条搜索、模糊搜索时,速度非常快 缺点: 只能给词条创建索引,而不是字段 无法根据字段做排序 1.3.es的一些概念 elasticsearch中有很多独有的概念...文档数据会被序列化为json格式后存储在elasticsearch中: 而Json文档中往往包含很多的字段(Field),类似于数据库中的列。...并不是如此,两者各自有自己的擅长支出: Mysql:擅长事务类型操作,可以确保数据的安全和一致性 Elasticsearch:擅长海量数据的搜索、分析、计算 因此在企业中,往往是两者结合使用

    39141

    【腾讯云技术沙龙预告】云端数据库的设计之美

    并深度结合小程序和珍爱网在利用腾讯云云数据库过程中的实践经验,介绍如何在降低开发与运维成本的情况下,打造出TOP榜应用程序。...随着业务高速增长,高可用的MySQL是众多开发者面临的挑战,本分享围绕高可用、设计故障自动恢复系统、基础设施高可用、同步方案等,讲述如何设计出最优MySQL系统 议题二:Redis数据库云端最佳技术实践...多年云服务后台支撑系统研发经验,在日志分析、数据搜索、时序数据库研发、大型Elasticsearch集群调优等方面有较为丰富的实践经验。...议题简介:Elasticsearch(ES)作为NOSQL+搜索引擎的有机结合体,在日志分析、网站搜索、数据分析等领域有广泛应用。...本次分享主要结合Elasticsearch的使用场景,在性能和稳定性两方面如何进行最佳调优。

    1.4K40

    干货 | 2024 年 Elasticsearch 常见面试题集锦

    解释在微服务架构中如何利用 Elasticsearch 来提供搜索服务。 回答: 基本上说一下自己 Java 或者 Python层面集成 Elasticsearch 实践就可以。...Q2:使用 Elasticsearch DSL 编写一个可以处理模糊搜索和自动完成功能的查询。 回答: 这是两个大类问题。...8、Elasticsearch API使用和最佳实践相关问题 Q1:描述你使用Elasticsearch REST API时的一些最佳实践。...Q2:你是如何在 Elasticsearch 中管理细粒度的访问控制? 回答: 描述在应用程序中实现 Elasticsearch 安全性的策略?...11、Elasticsearch 监控和警报机制 Q1:在开发过程中,你如何利用监控工具如 Elasticsearch 的 X-Pack 或其他插件来观察集群的健康状况?

    1.7K10

    Elasticsearch数据库

    Mysql搜索,但当搜索做到一定程度时,比如系统数据量上了10亿、100亿条的时候,传统的关系型数据库的I/O性能和统计分析性能就难以满足用户需要了。...2.2、Bigdesk插件          是Elasticsearch的一个集群监控工具,可以通过它来查看ES集群的各种状况,如cpu、内存使用情况、索引数据、搜索情况、http连接数等。...也称反向索引/置入索引或反向档案,用以存储一个映射:在全文搜索下某个单词在一个文档或者一组文档中的位置。...2、倒排索引建立索引的具体方式 始、确定需求          在这5份文档中根据关键字“乔布斯”搜索匹配的文档,附属要求:文档的排序,这个搜索关键字在每个匹配文档中出现的位置和次数。...1、为什么要使用锁机制 2、加锁的机制:悲观锁和乐观锁          悲观锁和乐观锁是什么已经在《Mysql.docx》介绍了。

    1.5K20

    【全文检索_01】核心理论

    1.1.2 数据分类   前面我们提到了非结构化数据,那么是不是还有结构化数据,是的,我们生活中的数据总体分为两种:结构化数据和非结构化数据。他们分别又是什么样的数据呢?...索引的一个主要目的就是加快检索表中数据,我们一般进行全文检索时都是模糊查询,那么在数据库中的索引对于模糊查询有没有作用呢。详见 ☞ MySQL 索引 ? ? ?   ...由以上分析可知,数据库适合结构化数据的精确查询,而不适合非结构化数据的模糊查询及灵活搜索,特别是数据量大时,无法提供想要的实时性。MySQL 也提供了分词索引,在数据量不是很大时可以考虑使用这种。...如利用windows的搜索也可以搜索文件内容,只是相当的慢。...在 DB-Engines 的排名中仅次于 Elasticsearch ?

    79820

    【全文搜索】全文搜索 PostgreSQL 或 ElasticSearch

    在本文中,我记录了在 PostgreSQL(使用 Django ORM)和 ElasticSearch 中实现全文搜索 (FTS) 时的一些发现。...作为一名 Django 开发人员,我开始寻找可用的选项来在大约一百万行的标准大小上执行全文搜索。有两个值得尝试的选项:PostgreSQL 和 ElasticSearch。...过滤不适用于模糊输入,但可以使用模糊输入完成“搜索”。 PostgreSQL 全文搜索 我的大部分项目都使用 Django Web 框架和 PostgreSQL。...因此,如果项目不打算拥有数千万条记录或大规模数据,Postgresql 全文搜索将是最佳选择。 术语 词干提取:这是将单词简化为其根形式的过程,以确保该单词的变体在搜索过程中与结果匹配。...NGram 可用于部分搜索单词,甚至从中间搜索单词。最常用的 NGram 类型是 Trigram 和 EdgeGram。 模糊性:模糊匹配允许您获得不完全匹配的结果。

    2.3K30

    mysql数据库优化(二)

    *代表占位符,只有在单词结尾才有用,也就是和like的 ‘serach%’ 一样。 不能在一个单词,比如database中搜索 taba,这样找不到数据,所以不能代替 like 模糊查询。...对于汉字区分词只能通过英文的 逗号,句号 进行区分词语  如: 我是汉字,你大爷的费劲,和你好      这样便有三个词语 对于后置模糊搜索:   1. select * from user where...所以对于后置模糊搜索有这两种好的方式,具体用哪一种 根据实际业务分析。 4.like使用   1. select的字段是否是索引字段为准。...如果select字段全部是索引字段则模糊搜索字段绝对使用索引         2.在select字段含有非索引字段时,只有在后置模糊搜索时 根据查询结果数量少时才使用索引,其他情况绝不使用索引 5.in...8.对于数据列的类型在搜索时尽量不要改变,如 id 是int类型,不要 用 varchar类型搜索 where id = '3'  应该用 where id =3    减少mysql在内部转换的操作

    1.1K20

    ES开发指南|如何快速上手ElasticSearch

    「倒排索引原理:」 倒排索引是目前搜索引擎公司对搜索引擎最常用的存储方式,也是搜索引擎的核心内容,在搜索引擎的实际应用中,有时需要按照关键字的某些值查找记录,所以是按照关键字建立索引,这个索引就是倒排索引...「主要用途:」 分布式下首页搜索,如百度,淘宝,京东....../bin目录,双击可执行文件elasticsearch.bat 可以看到绑定了两个端口: 9300:Java程序访问的端口 9200:浏览器、postman访问的端口 我们在浏览器中访问:http://... 「编写实体类,对应ElasticSearch中的document:」 // 表示此类对应es中的一条数据 type:相当于mysql中的表 indexName...:相当于mysql中的数据库 @Document(type = "docs",indexName = "yx") public class User implements Serializable {

    85840

    Elasticsearch学习笔记 -- 1

    ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。...Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。...,除了判断文档是否满足查询条件,es还会计算一个_score,来标示匹配的程度,为了判断目标文档和查询条件有多好) 全文本查询(针对文本类型数据) 模糊匹配(分词匹配)match 查询title...或者aaa的数据 { "query":{ "query_string":{ "query": "(elasticsearch AND 学习) OR java...注: 上述环境在ubuntu16.04 lts es5.6.7中测试成功 本文源码见https://github.com/EarthChen/elasticsearch-study.git 上述文字皆为个人看法

    40810

    ES开发指南|如何快速上手ElasticSearch

    Lucence的目的是为软件开发人员提供一个简单易用的工具包,以方便在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎,Lucence在全文检索领域是一个经典的祖先,现在很多检索引擎都在其基础上创建的...「倒排索引原理:」 倒排索引是目前搜索引擎公司对搜索引擎最常用的存储方式,也是搜索引擎的核心内容,在搜索引擎的实际应用中,有时需要按照关键字的某些值查找记录,所以是按照关键字建立索引,这个索引就是倒排索引...「主要用途:」 分布式下首页搜索,如百度,淘宝,京东....../bin目录,双击可执行文件elasticsearch.bat 可以看到绑定了两个端口: 9300:Java程序访问的端口 9200:浏览器、postman访问的端口 我们在浏览器中访问:http://...中的document:」 // 表示此类对应es中的一条数据 type:相当于mysql中的表 indexName:相当于mysql中的数据库 @Document(type = "docs",indexName

    49520

    Elasticsearch数据库

    Mysql搜索,但当搜索做到一定程度时,比如系统数据量上了10亿、100亿条的时候,传统的关系型数据库的I/O性能和统计分析性能就难以满足用户需要了。...2.2、Bigdesk插件 是Elasticsearch的一个集群监控工具,可以通过它来查看ES集群的各种状况,如cpu、内存使用情况、索引数据、搜索情况、http连接数等。...也称反向索引/置入索引或反向档案,用以存储一个映射:在全文搜索下某个单词在一个文档或者一组文档中的位置。...2、倒排索引建立索引的具体方式 始、确定需求 在这5份文档中根据关键字“乔布斯”搜索匹配的文档,附属要求:文档的排序,这个搜索关键字在每个匹配文档中出现的位置和次数。...为什么要使用锁机制 2、加锁的机制:悲观锁和乐观锁 悲观锁和乐观锁是什么已经在《Mysql.docx》介绍了。

    50220
    领券