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

Elasticsearch : multi_match best_fields还是most_fields?

Elasticsearch是一个开源的分布式搜索和分析引擎,用于快速搜索、分析和存储大量数据。它基于Lucene库,并提供了RESTful API,可以轻松地进行数据索引、搜索和分析。

在Elasticsearch中,multi_match是一个用于执行多字段匹配的查询类型,它可以在多个字段中搜索指定的关键字。multi_match查询有两个常用的选项:best_fields和most_fields。

  1. best_fields:当使用best_fields选项时,Elasticsearch会计算每个字段中的相关性得分,并返回相关性最高的文档。这种选项适用于需要在多个字段中搜索关键字,并希望返回与任何字段匹配最佳的文档的场景。例如,当搜索关键字在某个字段中的匹配更重要时,可以使用best_fields选项。
  2. most_fields:当使用most_fields选项时,Elasticsearch会计算每个字段中的相关性得分,并将所有字段的得分相加,返回得分最高的文档。这种选项适用于需要在多个字段中搜索关键字,并希望返回与任何字段匹配最多的文档的场景。例如,当搜索关键字在多个字段中的匹配都很重要时,可以使用most_fields选项。

根据具体的需求和场景,选择合适的选项。如果需要返回与任何字段匹配最佳的文档,则使用best_fields选项;如果需要返回与任何字段匹配最多的文档,则使用most_fields选项。

腾讯云提供了Elasticsearch的托管服务,即腾讯云ES(Elasticsearch Service)。腾讯云ES是基于开源Elasticsearch构建的一种高可用、高性能、易扩展的分布式搜索与分析引擎。您可以通过腾讯云ES来快速构建和部署Elasticsearch集群,并使用其强大的搜索和分析功能。

腾讯云ES产品介绍链接地址:https://cloud.tencent.com/product/es

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

相关·内容

白话Elasticsearch13-深度探秘搜索技术之基于multi_match+most fields策略进行multi-field搜索

文章目录 概述 官网 示例 构造模拟数据 普通查询 使用 multi_match + most fileds查询 best fields VS most fields ?...概述 继续跟中华石杉老师学习ES,第十三篇 课程地址: https://www.roncoo.com/view/55 ---- 官网 https://www.elastic.co/guide/en/elasticsearch...---- 示例 上一节 我们演示了best_fileds的用法 白话Elasticsearch12-基于multi_match + bestfields语法实现dis_max+tie_breaker ,...---- 使用 multi_match + most fileds查询 GET /forum/article/_search { "query": { "multi_match": {...简单来说,你对多个field进行搜索,就想搜索到某一个field尽可能包含更多关键字的数据 优点:通过best_fields策略,以及综合考虑其他field,还有minimum_should_match

29130

023.基于IT论坛案例学习Elasticsearch(二):Query高级知识(一)

java",content无匹配 # 说明 # 这里没有达到我的预期效果,预期应该是doc5的排名应该更靠前,这可能与影响评分的其他因素有关 # 但是doc2和doc4的得分都下降了,说明dis_max还是有有效果的...doc1(score=0.29): title匹配java,content不匹配 # 5. doc3(score=0.29): title不匹配,content匹配beginner # 可以看出对分数还是有影响的...6.3 multi_match、dis_max和tie_breaker的联合使用 GET /article/_doc/_search { "query": { "multi_match":...与most_fields策略的区别: best_fields,对多个field进行搜索,挑选某个field匹配度最高的那个分数,同时在多个query最高分相同的情况下,在一定程度上考虑其他query的分数...使用most_fields策略进行cross-fields搜索是比较合适的,因为cross-fields本来就是需要在多个field中去搜索,而most_fields策略就是尽可能得去多个field中去匹配关键词

72020

ElasticSearch权威指南:深入搜索(中)

multi_match多匹配查询的类型有多种,其中的三种恰巧与 了解我们的数据 中介绍的三个场景对应,即: best_fieldsmost_fields、cross_fields (最佳字段、多数字段...查询, 将 type 设置成 most_fields 然后告诉 Elasticsearch 合并所有匹配字段的评分: { "query": { "multi_match": {...问题一:在多个字段中匹配多个值 回想一下 most_fields 查询是如何执行的:Elasticsearch 为每个字段生成独立的 match 查询,再用 bool 查询将他们包起来。..."fields": [ "street", "city", "country", "postcode" ] } } } 但是对于 best_fieldsmost_fields...不过, Elasticsearch 还在搜索时提供了相应的解决方案:使用 cross_fields 类型进行 multi_match 查询。

2.9K31

白话Elasticsearch16-深度探秘搜索技术之使用原生cross-fiedls技术解决搜索弊端

概述 继续跟中华石杉老师学习ES,第15篇 课程地址: https://www.roncoo.com/view/55 白话Elasticsearch14-基于multi_match 使用most_fields...策略进行cross-fields search弊端 白话Elasticsearch15-使用copy_to定制组合field解决cross-fields搜索弊端 承接上两篇, 接下来看下如何使用原生cross-fiels...技术解决搜索的弊端 ---- 例子 使用DSL如下,可以解决 "operator": "and", GET /forum/article/_search { "query": { "multi_match...可能是横跨在多个field中的,所以必须要求每个term都在某个field中出现,组合起来才能组成我们想要的标识,完整的人名 原来most_fiels,可能像Smith Williams也可能会出现,因为most_fields...要求只是任何一个field匹配了就可以,匹配的field越多,分数越高 ---- 问题2:most_fields,没办法用minimum_should_match去掉长尾数据,就是匹配的特别少的结果

23320

ElastchSearch 基本使用姿势

说明,如果有精确查询的需求,使用前面的 term,可以缓存结果 2.8 multi_match 查询 更多相关信息,可以查看: 官网-multi_match 查询 多个字段中进行查询 语法 type...: best_fieldsmost_fields 和 cross_fields (最佳字段、多数字段、跨字段) 最佳字段 :当搜索词语具体概念的时候,比如 “brown fox” ,词组比各自独立的单词更有意义...混合字段:对于某些实体,我们需要在多个字段中确定其信息,单个字段都只能作为整体的一部分 { "query": { "multi_match": { "query...": "Quick brown fox", "type": "best_fields", "...上面除了写上精确的字段之外,还支持模糊匹配,比如所有字段中进行匹配 GET first-index/_search { "query": { "multi_match": { "

41930

Elasticsearch基本使用

安装Elasticsearch 可以在https://www.elastic.co/cn/downloads/elasticsearch这个页面找到elasticsearch对应系统的安装包,elasticsearch...查询:多字段进行匹配, 只要有一个字段满足搜索条件, 就能查询出来, 对于多字段匹配的问题, 涉及到评分, 可以通过type来指定评分标准,有三种类型,分别是: best_fields: 完全匹配的文档占比高..., 可以通过tie_breaker指定评分的系数;most_fields:表示 越多字段匹配的文档评分越; cross_fields: 表示词条的分词词汇是分配到不同字段中评分高。...GET /film/_search { "profile": "true", "query": { "multi_match": { "query": "传", "...": { "query": "民国", "fields": ["name", "desc", "tag"], "type": "best_fields", "tie_breaker

60920

一起学Elasticsearch系列-Query DSL

multi_match:多字段条件 multi_match 可以用来在多个字段上进行全文搜索。它接受一个查询字符串和一组需要在其中执行查询的字段列表。...multi_match查询也支持使用通配符(*)来匹配多个字段: { "query": { "multi_match" : { "query": "这是测试",...此外,multi_match 查询还支持许多参数,包括: type:设置查询类型,可选值包括:best_fields, most_fields, cross_fields, phrase, phrase_prefix...例如,“best_fields” 类型会从指定的字段中挑选分数最高的匹配结果计算最终得分,而“most_fields” 类型则会在每个字段中都寻找匹配项并将其分数累加起来。...需要注意的是,当使用 multi_match 查询时,如果字段不同,其权重可能也会不同。你可以通过在字段名后面添加尖括号(^)和权重值来调整特定字段的权重。

38520

像SELECT*一样手撸Query DSL——ElasticSearch下篇

是不是发现sql这门语言有多无敌了,想想现在争论java好还是go好,真是too young too simple。...所以,我一开始摸到ElasticSearch的时候,我就想,这个是不是也能用sql语句来查询,一搜,果然是有ElasticSearch SQL,不过因为它并不支持完整的sql语法,所以如果你只是简单的查一查...,又不想学习复杂的ES查询语句,那还是非常好用的!...multi_match是指匹配多个字段,所以它有个type,基本上可以满足各种查询需求 cross_fields 词是分配到不同字段中 best_fields 完全匹配词的文档占的评分高,会排在返回结果前面...most_fields 越多字段匹配的文档评分越高会排在返回结果前面 至于filter跟constant_score的应用场景,constant_score这个其实就跟它的字面意思一样,查询结果就不用计算分数了

1.4K30

初识 Elasticsearch7.x(二)

multi_match 多匹配查询的类型有多种,其中的三种恰巧与了解我们的数据中介绍的三个场景对应,即: best_fieldsmost_fields 和 cross_fields (最佳字段、...在上面的搜索之中,我们特别指明一个专有的 field 来进行搜索,但是在很多的情况下,我们并不知道是哪一个 field 含有这个关键词,那么在这种情况下,我们可以使用 multi_match 来进行搜索...: # 对多个字段进行查询 # 如果字段支持分词,则分词查询,如果不支持,则完整查询 GET /products/_search { "query": { "multi_match": {..."query": "元旦", "fields": ["title", "description^3"], "type": "best_fields" # 默认...} } } SELECT * FROM products WHERE title = '元旦' OR description = '元旦' 默认情况下,查询的类型是 best_fields ,这表示它会为每个字段生成一个

2.7K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券