首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏pythonista的日常

    es搜索优化&mysql查询优化

    这周优化了我们沙抖官网搜索的功能,这个搜索目前是根据视频标题进行匹配,之前是对用户输入的关键词进行了分词查找,比如用户输入【机器人】,这样的话,只要视频标题中有关键词的任意一个字都会被搜到,比如含有【人 】字的标题会展示出来,并可能排的很靠前,所以我就对当前的搜索进行了优化,现在搜索是优先进行相邻短语查询 match_phrase,如果相邻短语查询结果小于2个就进行普通的分词查询,这个相邻短语查询是要求在请求字符串中的所有查询项必须都在文档中存在 "range": { "video_date": { "gte": "now-30d+8h ", "lte": "now+8h" } } } "fields": { "video_title": { } } } } 这周内我还对我们的数据表查询进行了优化

    2.1K20发布于 2020-06-16
  • 来自专栏性能优化最佳实践

    【腾讯云ES】基于NGram分词ES搜索性能优化实践

    背景在商品搜索场景中,需要根据用户输入关键字严格匹配商品数据,而普通的全文检索方式,诸如:match 或者match_pharse,不一定能达到搜索效果。 例如:使用 match api 时,基于 ik_max_word 分词方式对“白色死神”进行分词后,搜索"白色"、"死神"能搜索到,而根据 "白" 进行搜索时,结果确为空。 关于严格匹配我们很容易就能想到模糊查询,es本身也是能支持模糊查询的:方案选择方案一:模糊查询 wildcard && fuzzy 模糊查询的功能有点类似 mysql 中的 like,可以使用正则表达式的通配符来达到模糊搜索的效果 ,但是当输入字符串很长或者搜索数据集很大时,搜索性能很低,原因是ES使用的是基于DFA的文本匹配算法,时间复杂度(M+N),当索引里面的数据量为K时,时间复杂度为(M+N)× K,数据量越大,输入文本越长 ,模糊搜索的效率就会越低。

    4K40编辑于 2022-12-05
  • 来自专栏ES搜索

    ES三周年】ES查询—海量数据搜索深度分页优化

    图片 背景 最近在实际项目中查询条件上越来越复杂,mysql的筛选已无法支撑,准备将所有搜索筛选改为es查询。 图片 图片 图片 具体使用方法: 第一次查询时,会生成一个 scrollId ,并将所有符合搜索条件的搜索结果缓存起来。 Scroll查询只搜索到了所有的符合条件的 doc_id (官方推荐用 doc_id 进行排序,因为本身缓存的就是 doc_id ,如果用其他字段排序会增加查询量),并将它们排序后保存在search context 创建一个时间点 Point In Time(PIT)保障搜索过程中保留特定事件点的索引状态。有了 PIT,search_after 的后续查询都是基于 PIT 视图进行,能有效保障数据的一致性。 引用文章:Elasticsearch Scroll API vs Search After with PIT 相比scroll,内存也得到了优化es 的查询简化流程: 第一步.用户发送查询dsl

    5.1K229编辑于 2023-04-29
  • 来自专栏洁癖是一只狗

    ES搜索相似度

    今天再来一道面试真题,es搜索的相似度算法如何计算 首先,我们要从这几方面回答 TF(term frequency)检索词频率 IDF(inversed document frequency)反向文档频率 中出现的次数,比如上面出现了3次,一个term在所有doc 中出现的次数越多,分数就越低,比如我们的and 或the常用词,就会频繁出现,对分数的贡献就很少,所以分数就比较小 字段长度准则 hello搜索的 ---->[2,5] 每一个doc都会计算出term计算出一个分数,hello 一个分数,world一个分数,都会计算出一个分数组,所有的分数组形成一个文档向量 查询向量 比如hello world,es

    1.5K10编辑于 2022-06-24
  • 来自专栏第二蒙古上单

    ES搜索内容置顶

    有些时候,我们可能需要人工干预ES搜索结果,让指定的内容置顶,ES提供了pinned语法来实现该功能。 "minimum_should_match" : 1 } } } }, "size" : 10, "from" : 0 } 看文档说似乎是从ES

    2.5K30发布于 2021-05-18
  • 来自专栏mathor

    搜索8

    我们按照从上到下,从左到右的顺序将3x3的矩阵拉伸为1x9,则每一个状态都可以通过一个包含数字0~8的字符串表示。 因此搜索过程中,我们需要记录下每一个状态是否被搜索到过,避免重复搜索  我们先来分析一下状态空间,也就是一共有多少种不同的状态。显然每一个状态都对应了0~8的一个排列,所以一共有9!   2  3  4  5  6  7  8  距离:0 + 1 + 3 + 3 + 1 + 0 + 0 + 2 = 10  得到该状态的h值为10  在A星搜索中,每一次我们从候选队列中选取状态也不再按照先进先出的顺序 若openlist为空,结束搜索。 这里9个格子的位置依次是:0 1 2 3 4 5 6 7 8  f用来保存每个状态的f值。g_step保存的是状态的g值,也就是从初始状态到这个状态的步数。

    92340发布于 2018-07-05
  • 来自专栏全栈程序员必看

    02.全文搜索ES

    全文搜索 1.介绍 elasticsearch 6 (和elasticsearch 5 的区别在于,root用户权限、一个库只能建立一个表) elasticsearch 6一个索引只能建立一张表 1.1 文本搜索引擎: 优点:搜索快; 缺点:占用空间。 solr需要依赖zk1. 1.2 elasticSearch(搜索引擎)的算法 倒排索引(在内容上建立索引,用内容匹配索引); btree mysql数据库的索引方式。 source": { "id": 2, "name": "operation meigong river", "doubanScore": 8, 的文档(分词处理并建立了索引)之间的相关度的高低 4.ES集群 4.1 节点、分片、索引 ==节点:==一个节点就是一个es的服务器,es集群中,主节点负责集群的管理和任务的分发,一般不负责文档的增删改查

    1.1K20编辑于 2022-06-30
  • 来自专栏JAVA同学会

    ES学习笔记(九)搜索

    搜索ES最最核心的内容,没有之一。前面章节的内容,索引、动态映射、分词器等都是铺垫,最重要的就是最后点击搜索这一下。下面我们就看看点击搜索这一下的背后,都做了哪些事情。 分数(score) ES搜索结果是按照相关分数的高低进行排序的,咦?! 怎么没说搜索先说搜索结果的排序了?咱们这里先把这个概念提出来,因为在搜索的过程中,会计算这个分数。 在ES搜索当中,分为两种,一种计算分数,而另外一种是不计算分数的。 频繁使用的过滤还会被ES加入到缓存,以提升ES的性能。下面我们看一个查询和过滤的例子,这个也是ES官网中的例子。 最后 在ES中,检索的花样是比较多的,这里也不能一一给大家介绍了,只介绍一些最基本、最常用的查询功能。下一篇我们看一下ES的聚合查询功能。

    66930发布于 2020-05-21
  • 来自专栏JAVA同学会

    ES学习笔记(九)搜索

    搜索ES最最核心的内容,没有之一。前面章节的内容,索引、动态映射、分词器等都是铺垫,最重要的就是最后点击搜索这一下。下面我们就看看点击搜索这一下的背后,都做了哪些事情。 分数(score) ES搜索结果是按照相关分数的高低进行排序的,咦?! 怎么没说搜索先说搜索结果的排序了?咱们这里先把这个概念提出来,因为在搜索的过程中,会计算这个分数。 在ES搜索当中,分为两种,一种计算分数,而另外一种是不计算分数的。 频繁使用的过滤还会被ES加入到缓存,以提升ES的性能。下面我们看一个查询和过滤的例子,这个也是ES官网中的例子。 最后 在ES中,检索的花样是比较多的,这里也不能一一给大家介绍了,只介绍一些最基本、最常用的查询功能。下一篇我们看一下ES的聚合查询功能。

    85130发布于 2020-05-25
  • 来自专栏程序员泥瓦匠

    搜索 ES 数据写入原理

    写个小文巩固下,本文主要讲 ES -> Lucene 的底层结构,然后详细描述新数据写入 ES 和 Lucene 的流程和原理。 无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库,并通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。 Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它: 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据 ES 基于底层这些包,然后进行了扩展,提供了更多的更丰富的查询语句,并且通过 RESTful API 可以更方便地与底层交互。类似 ES 还有 Solr 也是基于 Lucene 实现的。 三、新文档写入流程 3.1 数据模型 如图 一个 ES Index (索引,比如商品搜索索引、订单搜索索引)集群下,有多个 Node (节点)组成。每个节点就是 ES 的实例。

    82230编辑于 2021-12-17
  • 来自专栏亦枫的大佬之路

    JavaScript中的ES7ES8ES9ES10

    2.搜索的开始索引。 当第二个参数被传入时,该方法会从索引处开始往后搜索(默认索引值为0)。若搜索值在数组中存在则返回true,否则返回false。 'es8'.padStart(2); // 'es8' 'es8'.padStart(5); // ' es8' 'es8'.padStart(6, 'woof') ' 'es8'.padEnd(2); // 'es8' 'es8'.padEnd(5); // 'es8 ' 'es8'.padEnd(6, 'woof' ); // 'es8woo' 'es8'.padEnd(14, 'wow'); // 'es8wowwowwowwo' 'es8'.padEnd(7, '6'); // 'es86666

    4.7K40发布于 2020-03-19
  • 来自专栏腾讯云Elasticsearch Service

    ES8 向量功能窥探系列(一):混合搜索功能初探与增强

    本文旨在深入浅出地剖析Elasticsearch 8.x的kNN搜索和混合搜索功能,介绍其实现原理和关键技术点。 它是ES 8.x引入的,在混合搜索、向量搜索上专门设立、最常用的查询语法。 也希望更多有向量/混合搜索需求的用户,可以尝试和使用腾讯云ES 8.x,如果您也有独到的需求或想法,可以联系到腾讯云ES团队,我们将竭尽全力与您共同探索与解决。 目前最新腾讯云ES紧跟社区步伐,发布了8.13.3版本,同时也在不断地增加我们的自研功能和优化,我们会在后面带来更多的剖析。 下期内容预告:《ES8向量功能窥探系列(二):向量数据的存储与优化

    4K42编辑于 2025-02-20
  • 来自专栏QQ大数据团队的专栏

    源码级揭秘腾讯云 ES 向量搜索优化之道

    本文共计6751字 预计阅读时长21分钟 导语 在上一篇文章《ES8 向量功能窥探系列(一):混合搜索功能初探与增强》中,我们初步探讨了 Elasticsearch 8.x 的混合搜索功能,包括kNN 无需任何配置,即可以直接使用到降低 70% 存储的优化特性。 4. 量化 量化是向量搜索领域,乃至 AI 模型领域的常用技术,它通过一定算法对原始向量进行压缩,得到字节数占用较小的,量化后的向量表示。 由于越深程度的量化,越难以精确”复水“还原回原始向量,91% 和 95% 的差距已不悬殊,没有必要为 4% 的磁盘存储做更大牺牲,所以量化裁剪这一优化,我们选择在int8_hnsw上进行。 通过字段 mapping 配置中指定"index_options.type": "int8_only_hnsw"来启用,即可以直接使用到降低 90% 存储的优化特性。 虽然该功能相对实验性,但它进一步降低了 ES 向量搜索的存储门槛,拓展了不同读写流程。后续我们仅需要对”复水“算法进行优化,即可不断弱化这一影响,从而使其得到更广泛的使用。 6.

    81910编辑于 2025-02-24
  • 来自专栏YG小书屋

    ES 查询优化(二)

    "search"] } { "tags" : ["search", "open_source"] } 两个文档,{ "term" : { "tags" : "search" } }都能匹配,但想只搜索包含一个的值 { "text": "hop" }}, { "term": { "text": "leap" }} ] } } } 3、查询时提高索引的相关性 比如说,我们es docs_2017_12_09": 2 }, "query": { "term": { "text": "error" } } } 4、更改score计算方法 ES5.0

    2.8K40发布于 2018-05-23
  • 来自专栏YG小书屋

    ES 查询优化(一)

    "name": "dev" } }, "sort":[ "_doc" ] } 4、随机取n条(n>=10000)数据 1)可以利用ES }, "random_score": { } } } } 2)可以利用ES

    5.2K60发布于 2018-05-23
  • 来自专栏Android开发指南

    8.搜索

    搜索 1.在res/xml/下创建searchable.xml文件 label  hint * 注意:值不能直接写字符串,必须指向一个资源ID,例如@string/search_sms 2.创建SearchActivity intent-filter> <action name /> </intent-filter> <meta-data    name   resource /> </activity> 3.为了能让整个应用都可以调出搜索框 android.app.default_searchable"                    android:value=".SearchableActivity" /> 4.通过onSearchRequested()方法调出搜索框 5.在SearchableActivity中获取Intent,获取SearchManager.QUERY参数的值 进行搜索搜索完之后获得Cursor,绑定数据 6.如果想要类似AutoCompleteTextView savedInstanceState) { super.onCreate(savedInstanceState); listView = getListView(); // 通过intent 获得,在搜索框中输入的内容

    86050发布于 2018-05-14
  • 来自专栏OSChina

    ES - 使用ES客户端来操作搜索引新

    </artifactId> <version>2.9.9</version> </dependency> </dependencies> 2 编写方法 package com.shi.es org.elasticsearch.transport.client.PreBuiltTransportClient; import com.fasterxml.jackson.databind.ObjectMapper; /** * ES .get(); System.out.println("文档添加成功..."); //关闭客户端 client.close(); } } package com.shi.es QueryBuilders.queryStringQuery("无人驾驶校车").defaultField("content"); search(client,builder);//执行查询 } } 3 测试 package com.shi.es

    1.7K10发布于 2019-08-26
  • 来自专栏向治洪

    ES7、ES8新特性

    我们必须拥抱这些变化,并且我们需要把ES8加入到我们的技术栈中。 最后,includes第二可选参数fromIndex,这对于优化是有好处的,因为它允许从特定位置开始寻找匹配。 ES8 在上一个版本的基础上增加了很多新特性! ES8标准已于2017年6月发布。 Object.values/Object.entries 在ES8 /ES2017之前,Javascript开发者需要迭代一个对象的自身属性时候不得不用Object.keys,通过迭代且使用obj[key

    4K50发布于 2018-02-06
  • 来自专栏小小程序员——DATA

    ES三周年】分布式搜索索引elasticsearch JavaAPI编写ES搜索

    所以今天,我们研究下elasticsearch的数据搜索功能。我们会分别使用DSL和RestClient实现搜索。 因此你根据三个字段搜索,和根据all字段搜索效果当然一样了。但是,搜索字段越多,对查询性能影响越大,因此建议采用copy_to,然后单字段查询的方式。 不过,elasticsearch内部分页时,必须先查询 0~1000条,然后截取其中的990 ~ 1000的这10条:图片查询TOP1000,如果es是单点模式,这并无太大影响。 针对深度分页,ES提供了两种解决方案,官方文档:search after:分页时需要排序,原理是从上一次的排序值开始,查询下一页数据。官方推荐使用的方式。 从ES7.1开始不推荐,建议用 after search方案。2.3.高亮2.3.1.高亮原理什么是高亮显示呢?

    2.4K51编辑于 2023-04-28
  • 来自专栏Elastic Stack专栏

    ES|QL:为搜索而生 - 引入评分和语义搜索

    在Elasticsearch 8.18和9.0版本中,ES|QL增加了许多新功能,包括:支持评分语义搜索匹配功能的更多配置选项新的KQL功能在这篇博客中,我们将回顾这些8.18版本的功能以及计划添加到ES |QL中的其他令人兴奋的新功能,以加强我们在将ES|QL打造成现代搜索语言方面的投入。 只需将索引字段映射为semantic_text,即可为语义搜索设置您的索引。查看我们的语义文本搜索教程以获取更多详细信息。使用ES|QL进行混合搜索ES|QL使得同时进行语义和词法搜索变得简单。 超越8.18和9.0在未来的版本中,我们将为ES|QL增加更多的搜索功能,包括向量搜索、语义重排序、增强的评分自定义选项以及组合混合搜索结果的附加方法,如互惠等级融合(RRF)。 跟随在ES|QL中进行搜索和过滤的教程,进行一次对本文所述功能的实践介绍!

    45210编辑于 2025-04-27
领券