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的同学,可以私信或留言,我帮您内推,流程快!!!

福利二

福利三

相关推荐
丝斯20113 分钟前
AI学习笔记整理(44)——大规模预训练模型数据处理管道Pipeline
人工智能·笔记·学习
知识分享小能手16 分钟前
Oracle 19c入门学习教程,从入门到精通, —— 知识点详解(1)
数据库·学习·oracle
山土成旧客40 分钟前
【Python学习打卡-Day42】打开深度学习“黑箱”:从Hook回调到Grad-CAM可视化
python·深度学习·学习
星火开发设计1 小时前
C++ stack 全面解析与实战指南
java·数据结构·c++·学习·rpc··知识
冉冰学姐1 小时前
SSM校园学习空间预约系统w314l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·学习·ssm 框架·校园学习空间预约系统·师生双角色
小当家.1051 小时前
从零构建项目认知:如何画出一张合格的系统架构图(以供应链系统为例)
java·spring boot·学习·架构·系统架构·供应链·实习
博览鸿蒙2 小时前
FPGA 开发软件学习笔记分享(内含安装与环境配置)
笔记·学习·fpga开发
反向跟单策略2 小时前
期货反向跟单-贵金属牛市中的反向跟单密码
大数据·人工智能·学习·数据分析·区块链
kingmax542120082 小时前
NOAI和IOAI竞赛学习路径
人工智能·学习·青少年编程
其美杰布-富贵-李3 小时前
pycalphad 学习笔记
笔记·学习·热力学计算