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

福利二

福利三

相关推荐
贺函不是涵1 小时前
【沉浸式求职学习day43】【Java面试题精选3】
java·开发语言·学习
maray1 小时前
ETL 学习
数据仓库·学习·etl
海尔辛1 小时前
学习黑客Active Directory入门
学习·ad·window
你的坚持终将美好,1 小时前
elasticsearch kibana ik 各版本下载
大数据·elasticsearch·搜索引擎
superior tigre2 小时前
C++学习:六个月从基础到就业——C++20:协程(Coroutines)
c++·学习·c++20
冷崖2 小时前
网络编程-select(二)
网络·学习
superior tigre2 小时前
C++学习:六个月从基础到就业——C++20:概念(Concepts)
c++·学习·c++20
xiaohanbao092 小时前
day29 python深入探索类装饰器
开发语言·python·学习·机器学习·pandas
jackson凌2 小时前
【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
java·笔记·学习
冰茶_3 小时前
掌握LINQ:查询语法与方法语法全解析
sql·学习·microsoft·微软·c#·linq