ElasticSearch备考 -- 多字段查询

一、题目

索引task有3个字段a、b、c,写一个查询去匹配这三个字段为mom,其中b的字段评分比a、c字段大一倍,将他们的分数相加作为最后的总分数

二、思考

通过题目要求对多个字段进行匹配查询,可以考虑multi match、bool query操作。其中multi match可以通过参数控制分数。查看官网API 包括五中参数。

其中

  • best_fields:默认,多个字段中,返回评分最高的。

  • most_fields:匹配多个字段,返回的综合评分(非最高分)

  • cross_fields:待查询内容在多个字段中都显示,注意只能用在同种分析器类型字段

三、解题

Step 1、初始化数据

bash 复制代码
POST task/_bulk
{"create":{"_id":1}}
{"a":"key","b":"mom","c":"mom"}
{"create":{"_id":2}}
{"a":"key","b":"cake mix","c":"mom"}
{"create":{"_id":3}}
{"a":"key","b":"mom","c":"cake mix"}
{"create":{"_id":4}}
{"a":"cake mix","b":"mom","c":"mom"}

Step 2、查询多个字段

multi filed查询参数

  • type:为multi field对匹配评分五种参数

  • fileds:可以使用插入符号(^)增强单个字段

  • tie_breaker:范围为0 ~ 1,如果有值则计算评分为 tie_breaker * _score

  • operator:操作符包括and、or,

bash 复制代码
POST task/_search
{
  "query": {
    "multi_match": {
      "query": "mom",
      "fields": ["a","b^2","c"],
      "type": "most_fields"
    }
  }
}

四、总结

  • 重点弄清type每种评分类型对应含义
  • fileds中若想增强评分使用符合为^

参考资料

送一波福利:

福利一

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

有需要内推JD的同学,可以私信或留言,我帮您内推,流程快!!!

福利二

福利三

相关推荐
-Marks-10 分钟前
【C++编程】STL简介 --- (是什么 | 版本发展历程 | 六大组件 | 重要性缺陷以及如何学习)
开发语言·c++·学习·stl·stl版本
Java小白笔记1 小时前
OpenClaw 实战方法论
java·开发语言·人工智能·ai·全文检索·ai编程·ai写作
Joseph Cooper2 小时前
STM32MP157 Linux驱动学习笔记(四):典型总线与设备模型(SPI/USB)
linux·stm32·学习
2401_827499992 小时前
数据分析学习05(黑马)-Pandas
学习·数据分析·pandas
@土豆3 小时前
Elasticsearch 9.0.1 集群部署(Docker Compose + k8s 部署方式)
大数据·elasticsearch·docker
结衣结衣.3 小时前
手把手教你实现文档搜索引擎
linux·c++·搜索引擎·开源·c++11
喝醉酒的小白3 小时前
Elasticsearch 故障分析笔记:Pending Tasks 堆积与 Alias 风暴
笔记·elasticsearch
醉颜凉3 小时前
Elasticsearch 生产级核心原理:Shard Allocation Awareness 工作机制与实战配置详解
大数据·elasticsearch·搜索引擎
Lisonseekpan3 小时前
Git:如何将一个分支的特定提交合并到另一个分支?
java·大数据·git·后端·elasticsearch
Elastic 中国社区官方博客3 小时前
使用 EDOT Browser 和 Kibana 进行 OpenTelemetry 浏览器端埋点
大数据·服务器·数据库·elasticsearch·搜索引擎·单元测试·可用性测试