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

为什么Elastic在使用like和or进行搜索时速度很慢?

Elastic在使用like和or进行搜索时速度较慢的原因主要有以下几点:

  1. 索引结构:Elasticsearch使用倒排索引来加速搜索,而like和or操作需要对多个字段进行模糊匹配或者多个条件的匹配,这会导致索引结构的复杂性增加,从而降低搜索速度。
  2. 数据量:如果数据量较大,like和or操作需要对大量的数据进行匹配,这会增加搜索的时间复杂度,导致搜索速度变慢。
  3. 正则表达式:like操作通常使用正则表达式进行模糊匹配,而正则表达式的匹配过程相对复杂,会消耗较多的计算资源和时间,从而导致搜索速度下降。

针对这个问题,可以考虑以下优化方案:

  1. 使用全文搜索:Elasticsearch提供了全文搜索的功能,可以使用match或者match_phrase等查询方式来进行模糊匹配,相比like操作,全文搜索可以更高效地进行匹配。
  2. 使用布尔查询:对于or操作,可以使用布尔查询来替代,将多个条件组合在一起进行查询,这样可以减少查询的次数,提高搜索速度。
  3. 优化索引结构:根据实际需求,合理设计索引结构,选择合适的字段类型和分词器,以及使用合适的数据结构来存储数据,可以提高搜索的效率。
  4. 数据分片和集群化:如果数据量较大,可以考虑将数据进行分片存储,并使用多个节点组成集群,这样可以提高搜索的并发性和吞吐量。
  5. 缓存机制:对于频繁搜索的数据,可以考虑使用缓存机制,将搜索结果缓存起来,减少重复搜索的开销。

需要注意的是,以上优化方案是一般性的建议,具体的优化策略需要根据实际情况进行调整和实施。另外,腾讯云提供了Elasticsearch服务,可以根据实际需求选择相应的产品进行部署和使用。详情请参考腾讯云Elasticsearch产品介绍:腾讯云Elasticsearch

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

相关·内容

Linux中使用rsync进行备份如何排除文件目录?

Linux系统中,rsync是一种强大的工具,用于文件目录的备份同步。然而,进行备份,我们可能希望排除某些文件或目录,例如临时文件、日志文件或其他不需要备份的内容。...本文将介绍Linux中使用rsync进行备份如何排除文件目录的方法。图片方法一:使用--exclude选项rsync提供了--exclude选项,可以命令行中指定要排除的文件或目录。...方法三:使用rsync的模式匹配rsync还支持使用模式匹配来排除文件目录。我们可以使用通配符来匹配文件目录名。...方法四:排除隐藏文件目录在Linux系统中,以"."开头的文件目录被视为隐藏文件或目录。如果我们希望排除这些隐藏的文件目录,可以使用--exclude='.*'选项。...*'来排除源目录中的所有隐藏文件目录。图片结论Linux中,使用rsync进行备份,排除文件目录对于保持备份的干净高效非常重要。

2.3K50

Spark为什么只有调用action才会触发任务执行呢(附算子优化使用示例)?

微信图片_20200709201425.jpg但初学Spark的人往往都会有这样的疑惑,为什么Spark任务只有调用action算子的时候,才会真正执行呢?...导致map执行完了要立即输出,数据也必然要落地(内存磁盘) 2. map任务的生成、调度、执行,以及彼此之间的rpc通信等等,当牵扯到大量任务、大数据量,会很影响性能 看到这两点是不是很容易联想到...但是每个Spark RDD中连续调用多个map类算子,Spark任务是对数据一次循环遍历中完成还是每个map算子都进行一次循环遍历呢? 答案很确定:不需要对每个map算子都进行循环遍历。...,此时想对两个数据集仍然保持分组的基础上进行join,则可以使用cgroup,以避免分组展开然后再次分组的开销 Spark目前提供了80多种算子,想熟练掌握这些算子如何运用,笔者建议学习一下Scala...这里举一些常用的transformationaction使用示例: transformation >> map map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。

2.3K00

Spark为什么只有调用action才会触发任务执行呢(附算子优化使用示例)?

但初学Spark的人往往都会有这样的疑惑,为什么Spark任务只有调用action算子的时候,才会真正执行呢?咱们来假设一种情况:假如Spark中transformation直接触发Spark任务!...导致map执行完了要立即输出,数据也必然要落地(内存磁盘) 2. map任务的生成、调度、执行,以及彼此之间的rpc通信等等,当牵扯到大量任务、大数据量,会很影响性能 看到这两点是不是很容易联想到...但是每个Spark RDD中连续调用多个map类算子,Spark任务是对数据一次循环遍历中完成还是每个map算子都进行一次循环遍历呢? 答案很确定:不需要对每个map算子都进行循环遍历。...,此时想对两个数据集仍然保持分组的基础上进行join,则可以使用cgroup,以避免分组展开然后再次分组的开销 Spark目前提供了80多种算子,想熟练掌握这些算子如何运用,笔者建议学习一下Scala...这里举一些常用的transformationaction使用示例: transformation >> map map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。

1.6K30

Elasticsearch高级调优方法论之——根治慢查询!

转自:铭毅天下 1、引言 Elasticsearch是非常灵活且功能丰富的搜索引擎,它提供了许多不同查询数据的方法。实战业务场景中,经常会出现远远低于预期查询速度的慢查询。...这会在搜索线程池中创建排队任务,从而导致搜索拒绝。 场景2:磁盘I/O速度慢或在某些情况下完全饱和的CPU导致搜索排队。 2.2.2 解决方案 1、创建索引采用1主分片&1副本模型。...2、对于重型索引用例,请检查我们的索引调整建议,以优化索引搜索性能。 包含但不限于: 1)数据初始化阶段refresh设置 -1、副本设置为 0,以提升写入速度;写入完毕后复原。...2、使用query缓存request缓存加快检索速度。 节点级别的query缓存默认是开启的。...当size设置为0,Elasticsearch会缓存搜索请求的结果,以便更快地进行搜索 4.2 参考官方搜索优化建议,看是否凑效?

4.8K32

那些年我们一起学过的 Elasticsearch

您可以用快到令人惊叹的速度使用访问您的所有数据。 如果你能够很快速的从你的数据存储介质中查询出数据,那么你就掌握了主动权。你就有条件进行商业迭代以此获得更多的可能。...为什么我们需要通过 ES 来做检索? 上面讲到了ES实时、存储、搜索、分析。那我们之前使用的 SQL Server、Mysql、Oracle不也是可以做到吗?...反手就是给你一个 SQL: select * from user where name like '%一万小极客%' 这样还不是可以把包含 一万小极客 的公众号搜索出来么。...Kibana 则可以让用户 Elasticsearch 中使用图形图表对数据进行可视化。 所有的产品都是围绕着Elasticsearch形成了一家专门致力于搜索的公司——Elastic。...Elastic 上市 ? Elastic 上市 2018年10月06日,以Elastic之名进行交易的数据搜索软件初创公司Elastic search纽约证券交易所上市。

87020

ElasticSearch优化会员列表搜索

设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便,维基百科、Stack Overflow、Github 都采用它 为什么使用ElasticSearch 当一个系统的搜索非常复杂,需要关联多张表...、拥有多种条件来进行查询,数据库处理起来无疑会很慢,当数据少的时候可能还不明显,但是一旦数据多了,数据库就会被严重拖慢,就算使用索引以及对SQL语句进行优化,可以优化的空间也很少的情况下,那么就可以考虑使用搜索引擎来优化搜索了...,构成实体membercard,如:[{"cardno":"xxxxx",cardtags:[{"tagid":1},{"tagid":2}}] 保存到ElasticSearch需要将数据转化为json...Index只能有一个Type(后续版本可能取消),ID就是这条消息的主键,当写入相同ID的数据,会覆盖旧的数据 更新数据 当数据发生改变,需要更新数据到ElasticSearch,直接把数据关联的数据查询出来...对象,可以通过ElasticSearch相关依赖包来进行组装查询条件 Java中通过QueryBuilders来组装查询条件,其中QueryBuilders常用的几种查询方式(不同的查询方式可以组合)

78450

初识 ElasticSearch,一个上天下地的搜索引擎 No.158

因为直接使用 Lucene 构建搜索有很多问题,包含大量重复性的工作,所以 Shay Banon 便在 Lucene 的基础上不断地进行抽象,让 Java 程序嵌入搜索变得更容易,经过一段时间的打磨便诞生了他的第一个开源作品...检索系统就是采用开源的 Elasticsearch,从近实时、可扩展、中文分词、搜准率同义词等几个角度出发,对聚合结果按规则进行索引构建,并进行了部分同义词调优。 ?...2、直接用 ELK 技术栈,一行代码都不用,直接用 Beats + Logstash 收集数据,ElasticSearch 作为存储引擎, Kibana 作为图表搜索产品直接使用。...https://www.elastic.co/guide/index.html这个网站上有官方权威的中文版教程,从安装,搜索,原理,应用,都有很完善的教程案例,可以在里边按顺序翱翔。...2.大蕉了解solr不,为啥用es不用solr 我司就还在用solr进行搜索 Solr 索引效率没有 ES 高,非常明显,主要瓶颈 IO 这块,ES实时搜索领域碾压solr。

94330

1.Elastic Stack分布式数据采集搜索引擎基础入门介绍

另外,除了快速搜索大量文本搜索速度之后,搜索过程还涉及到了许多其它问题,例如单项查询、多项查询、短语查询、通配符查询、结果ranking排序,以及友好的查询输入方式等。...Tips : Elasticsearch 是 Elastic Stack 的核心,是一款速度快、可扩展的搜索分析引擎。...例如,文本字段是 存储倒排索引中,数值地理字段存储 BKD 树中。 能够使用每个字段的数据结构来组装返回搜索 结果是让 Elasticsearch 如此快速的原因。...elastic : 超级用户 apm_system: APM服务器Elasticsearch中存储监视信息使用 kibana_system:用于负责Kibana连接Elasticsearch...logstash_system:Logstash将监控信息存储Elasticsearch中使用 beats_system:BeatsElasticsearch中存储监视信息使用 remote_monitoring_user

1.1K10

Elasticsearch 如何实现相似推荐功能?

其实,实际业务实战环节,或多或少也会有类似的功能,Elasticsearch 有没有类似功能呢? 大家实战环节遇到的问题也大致如下: Q1:ES 有相似搜索这个功能吧?...4、More Like This 底层逻辑 MLT 查询简单地从输入的待查询文本中提取文本,对其进行分析,通常在字段中使用相同的分析器,然后选择具有最高 tf-idf 的前 K 个词组以形成这些词组的组合查询语句...此外,当对文档使用相似度检索,必须启用 _source 或设置为 stored 或存储为 term_vector。为了加快分析速度,可以索引存储 terrm vectors。...每个分词单元的位置 position 序号。 分词后的单词或字原有串中的起始位置 start_offset 、结束位置 end_offset 偏移值。 有效载荷。...所以,实战环节使用 more like this 多半基于燃眉之急。

3.7K20

探究 | Elasticsearch 与传统数据库界限

0、引言 现在几乎网上所有资料都说数据存储传统数据库,再在 es 中同步一份数据作为检索使用,但是也都没有很详细的说明为什么要这么做,而且 es 本身可以存储数据的情况下,存储两份数据是不是没有必要...Elasticsearch 以其简单的 REST 风格 API、分布式特性、速度可扩展性而闻名,是 Elastic Stack 的核心组件;Elastic Stack 是适用于数据采集、充实、存储、分析可视化的一组开源工具...实际业务中: 如果数据量不大,建议使用简单的关系数据库结合简单的 SQL 查询就能解决问题。 如果您对性能没有问题,请保持架构简单并使用单个数据库存储,必要加些缓存(如 redis)。...如果您在搜索中遇到性能问题,则可以将关系型数据库 Elasticsearch 结合使用。...为什么 Elasticsearch/Lucene 检索可以比 mysql 快? Mysq 的分词词典(term dictionary)是以 b-tree 排序的方式存储磁盘上的。

4.1K110

Elasticsearch:提升 Elasticsearch 性能

在他们的系统中,Elastic Stack 是不可缺少的工具,无论搜索,可观测性或安全领域,Elastic Stack 都发挥着巨大的作用。...此外,最好使用固态硬盘 (SSD) 进行存储,因为它们可以显着提高索引搜索性能。规划你的索引策略:Elasticsearch 旨在处理大量数据,但重要的是要考虑这些数据是如何被索引的。...密切关注磁盘使用情况、CPU 内存使用情况以及搜索请求的数量等内容非常重要。你可以参考 “Elastic:开发者上手指南” 中的 “监视及管理” 部分。...从多个线程或进程发送数据将有助于使用集群的所有资源,减少每次 fsync 的成本并提高性能。如果你是使用编程语言来实现数据写入,尽量采用 Elastic 官方所提供的丰富的客户端库来进行写入。...你可以阅读文章 “Elasticsearch:从搜索中获取选定的字段 fields” 以了解更多。避免通配符查询:通配符查询可能很慢并且占用大量资源。 最好尽可能避免使用它们。

16410

Mysql-为什么使用B+树

,其他每个节点至少有ceil(m/2)个孩子 (为什么是ceil(m/2),主要是为了最大限度降低层高,提高搜索效率。)...1、B+树的磁盘读写代价更低:2、B+树的查询效率更加稳定:3、B+树天然有序,更有利于对数据库的扫描:为什么使用B+树:1、B+ 树索引的所有数据均存储叶子节点,而且数据是按照顺序排列的,链表连着的...Hash 索引 B+ 树索引区别是什么?1、B+ 树可以进行范围查询,Hash 索引不能。2、B+ 树支持联合索引的最左侧原则,Hash 索引不支持。...4、Hash 索引等值查询上比 B+ 树效率更高。5、B+ 树使用 like 进行模糊查询的时候,like 后面(比如%开头)的话可以起到优化的作用,Hash 索引根本无法进行模糊查询。...2、回旋查找的问题:通过单向链表解决了该问题(所以该B+树范围查找速度非常快,这也是为什么排序的时候,需要使用索引排序) 查找大于5的数据:先定位到5,然后直接把5后面的数据直接从单链表中拿出来,不用再向之前通过回旋查找一个一个拿去大于

13610

全文检索原理

(2, 3, 4) 说明: 倒排索引就是建立词语与文件的对应关系(词语什么文件出现, 出现了多少次, 什么位置出现); 搜索, 根据用户输入的关键词, 直接在索引中进行查询, 速度更快....字典示例 比如字典,字典的拼音表部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果字典没有音节表部首检字表,茫茫辞海中找一个字只能顺序扫描。...(Indexing) 如何对索引进行搜索?(Search) 索引存些什么? 为什么顺序扫描的速度慢?是由于要搜索的信息非结构化数据中所存储的信息不一致造成的。...有了索引,便使保存的信息搜索的信息一致,可以大大加快搜索速度。...而对一个很大量的数据创建索引也是一个很慢的过程。 优点:顺序扫描是每次都要扫描,而全文索引可一次索引,多次使用;检索速度快。 如何创建索引?

2.5K40

Elasticsearch 7.0 正式发布,盘他!

简单来说,一般我们计算文本相关性的时候,会通过倒排索引的方式进行查询,通过倒排索引已经要比全量遍历节约大量时间,但是有时候仍然很慢。...2.2 间隔查询(Intervals queries) 某些搜索用例(例如,法律专利搜索)引入了查找单词或短语彼此相距一定距离的记录的需要。...节点更清楚地记录它们的状态,有助于诊断为什么它们不能加入集群或为什么无法选举出主节点。...3.4 ELK Stack要一起升级 升级到新版本的Elasticsearch,需要升级Elastic Stack中的每个产品。...比如:6.6+提出的ilm索引生命周期管理,你如果关注Elastic Meetup的话,印象ebay阿里还有其他公司自己就实现过类似功能。

1.8K40

谈谈SQL查询中回表对性能的影响

运营反馈某个功能速度很慢,查了一下,定位到如下 SQL: select id from user where name like ‘%foobar%’ order by created_at limit...10; 业务需要,LIKE 的时候必须使用模糊查询,我当然知道这会导致全表扫描,不过速度确实太慢了,直观感受,全表扫描不至于这么慢!...要想搞清楚缘由,你需要理解本例中 SQL 查询的处理流程:当使用 limit ,因为只是返回几条数据,所以优化器觉得采用一个满足 order by 的索引比较划算;当不使用 limit ,因为要返回所有满足条件的数据...不过就算知道这些还是不足以解释为什么本例中全表扫描反而快,实际上这是因为当使用索引的时候,除非使用了 covering index,否则一旦索引定位到数据地址后,这里会有一个「回表」的操作,形象一点来说...,就是返回原始表中对应行的数据,以便引擎进行再次过滤(比如本例中的 like 运算),一旦回表操作过于频繁,那么性能无疑将急剧下降,全表扫描没有这个问题,因为它就没用索引,所以不存在所谓「回表」操作。

2.3K20

ElasticSearch基础概念

另外,腾讯云、阿里云的云平台上,也都有相应的ElasticSearch云产品可以使用。 5、在当今大数据时代,掌握近实时的搜索分析能力,才能掌握核心竞争力,洞见未来。...二、什么是ElasticSearch ElasticSearch是一款非常强大的、基于Lucene的开源搜索及分析引擎;它是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度规模,去探索你的数据。...Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题回答。...集群名称可以配置文件中指定。 Node 节点:存储集群的数据,参与集群的索引搜索功能。...Shard 分片:创建一个索引可以指定分成多少个分片来存储。每个分片本身也是一个功能完善且独立的“索引”,可以被放置集群的任意节点上。

13510

Elasticsearch安全分析领域的应用

ES (Elasticsearch)是当前主流的大数据搜索引擎,具有扩展性好,检索速度快,近实时等优势,依托于ES的这些优势,其不仅广泛地应用于各种搜索场景,如日志检索,应用搜索等,安全分析等领域也开始逐渐展现其强大的能力...数据标准化增强 2.1 数据标准化 安全分析的数据来源多种多样,不同来源的数据中表示相同含义的字段名称,类型上各不相同,这就导致了进行数据检索分析,为了检索不同数据源中的同类数据,可能要兼容性地写多个查询条件...Action使用 Actions: 条件触发执行的动作 使用这套完善的基于阈值规则的监控告警功能模块,用户可以方便快捷地定义各种基于阈值规格的告警,以满足安全分析的需要。...用户可以Discover中直接搜索查看数据,也可以Dev tools中执行任意的ES查询语句,还可以VisulizationDashboard中定义业务关心的数据视图。...而Elastic团队也在这方面不断发现提供了一套完整的解决方案,使得安全分析团队使用ES进行安全分析变得得心应手,有的放矢。

1.8K42

通过 Search AI Lake Elastic Cloud Serverless 以实现低延迟搜索的扩展

这就是为什么 Elasticsearch 广泛用于对结构化非结构化数据进行实时分析,例如日志分析、SIEM 广泛的 Search AI 应用程序。...例如,对象存储本质上优先考虑可扩展性而非速度,导致交互查询出现不可接受的延迟。这使得数据湖对于需要低延迟查询访问所有数据的实时应用程序来说几乎无法使用,无论其规模复杂性如何。...数据索引同时利用“写模式”(Schema on Write)实现规模速度,以及“读模式”(Schema on Read)提供灵活性更快的价值实现。...即使使用重索引功能以提高相关性,也不会影响搜索性能。定价包:Elasticsearch Serverless 引入了一个单一产品层级,提供对所有搜索功能构建块的访问,以编程方式开发搜索应用程序。...探索搜索 AI 的全部力量低延迟应用的未来已经到来,无需速度、规模或支出上妥协。

8711

最强 Elastic Stack 保姆级教程(一)

我们搜索按结构化的拼音搜到读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。 这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。...Kibana 则可以让用户 Elasticsearch 中使用图形图表对数据进行可视化。...然而,对于扩展速度如此之快的堆栈而言,一直采用首字母缩写的确不是长久之计。...“GitHub 使用 Elasticsearch 搜索 20TB 的数据,包括 13 亿文件 1300 亿行代码” 维基百科:启动以 Elasticsearch 为基础的核心搜索架构 百度:百度目前广泛使用...可以用 Kibana 来搜索,查看,并和存储 Elasticsearch 索引中的数据进行交互。 可以轻松地执行高级数据分析,并且以各种图标、表格地图的形式可视化数据。

3.9K20

1 初识ElasticSearch

Mysql也可也Select,为什么 不选Mysql 作为主 搜索服务器?...功能低下 我们搜索小米手机,Mysql的sql为 select * from 表 where title like “%小米手机%”; 其结果 只会包含 “小米手机“相关信息。...为什么使用这个ElasticSearch搜索服务器? ElasticSearch 比Mysql 额外拥有 倒排索引(反向索引) 什么是倒排索引?...ES 数据的存储原理与搜索原理 image.png 存储原理(分词后以Json形式存储) 案例:一个故事网站使用ES:将录入的所有诗歌进行分词。...(生成倒排索引的时候,词条会被排序,形成树结构,提升词条的查询速度搜索原理 关于解决Mysql查询功能低下问题: 我们使用 “月光” 查询的时候,ES 会自动进行分词 “月”、”光”、”月光”。

21710
领券