带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(9)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之18:——3.4.2.3.Search通过Kibana(9)

《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(8) https://developer.aliyun.com/article/1231063


Disjunction max query 查询

 

Disjunction 查询也被理解为分离最大化查询,指的是将任何与任一查询匹配的文档,作为结果返回,但只将最佳匹配的评分,作为查询的评分结果返回。

 

例如查询商品名称和品牌名称中包含“苹果”的信息,当品牌的评分高于商品名称时,则返回品牌的评分做为总评分(忽略tie_breaker缓冲)。

 

GET /my_goods/_search
{
  "query": {
    "dis_max": {
      "tie_breaker": 0.7,
      "boost": 1.2,
      "queries": [
        {
          "term": {
            "goodsName": {
              "value": "苹果"
            }
          }
        },
        {
          "term": {
            "brandName": {
              "value": "苹果"
            }
          }
        }
        ]
    }
  }
}

返回结果(忽略无关字段)


"max_score" : 3.0150018,
    "hits" : [
      {
        "_index" : "my_goods",
        "_type" : "_doc",
        "_id" : "1",
        "_score" : 3.0150018,
        "_source" : {
          "goodsName" : "苹果 51英寸 4K超高清",
          "brandName" : "苹果"
        }
      },
      {
        "_index" : "my_goods",
        "_type" : "_doc",
        "_id" : "5",
        "_score" : 1.3465583,
        "_source" : {
          "goodsName" : "苹果UA55R苹果U7苹果520JXXZ 55英寸 5K超高清",
          "brandName" : "三星苹果"
        }
      },
      {
        "_index" : "my_goods",
        "_type" : "_doc",
        "_id" : "4",
        "_score" : 1.2337791,
        "_source" : {
          "goodsName" : "山东苹果UA55RU7520JXXZ 苹果54英寸 5K超高清",
          "brandName" : "山东苹果"
        }
      },


分析:

 

1、ID=1 的记录,由于品牌只包含“苹果” 2 字,Elasticsearch 认为这种匹配度更高,所以此条记录评分排在第一位。

2、ID=5 的记录,由于品牌中和 ID =4 的记录都包含苹果且字数一样,此时就要看 goodsName 包含苹果的词频数量了,ID=5 的品牌中,“苹果”出现了 3 次,而 ID=4 的值出现了 2次,所以评分没有 ID=5 的高,符合我们的预期结果。

3、tie_breaker 字段做什么用呢?它是起到了缓冲的作用(取值范围:0 到 1 之间),Disjunction 查询会将匹配度最高的字段得分,做为整个文档的得分返回,这种情况其他字段就不起作用了,难免有点走极端。此时就需要 tie_breaker 来做缓存,提升其他字段的影响力,最终的结果:brandName 评分+ goodsName 评分 *tie_breaker,作为总评分返回。



 《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.3.Search通过Kibana(10) https://developer.aliyun.com/article/1231061

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
9月前
|
安全 数据挖掘 BI
欢迎使用Quick BI,开启您的智能数据分析之旅!
欢迎选择Quick BI作为您的数据分析伙伴!本文将为您介绍一个月全功能免费试用教程,帮助您轻松上手。请确保在PC环境下操作。
909 6
|
存储 人工智能 文字识别
极速搭建基于人工智能的OCR识别应用
本场景将使用阿里云函数计算,Serverless 应用中心,带大家 1分钟 Serverless 极速部署基于人工智能的OCR识别应用。
|
11月前
|
Java
final 在 java 中有什么作用
在 Java 中,`final` 关键字用于限制变量、方法和类的修改或继承。对变量使用 `final` 可使其成为常量;对方法使用 `final` 禁止其被重写;对类使用 `final` 禁止其被继承。
196 2
|
调度 开发者 Python
什么是Python asyncio
**Python的asyncio库概述** asyncio是Python的异步I/O框架,基于协程,提供了一种编写并发代码的简洁方式。它引入了`async`和`await`关键字,用于定义和执行异步操作,简化了IO密集型任务的并发处理。事件循环是核心,负责调度协程任务。asyncio解决了传统多线程/多进程并发的复杂性和效率问题,尤其适合结构化的网络编程。例如,通过并发下载多个网站,asyncio能提高效率,对比之下,使用`threading`模块则更为低效。简而言之,asyncio是Python高效异步编程的标准工具。
128 1
|
JSON Rust 前端开发
Rust Web框架概览:Actix-Web与Yew的探索之旅
本文深入探讨了Rust编程语言中两个备受瞩目的Web框架:Actix-Web和Yew。我们将详细介绍这两个框架的核心特性、应用场景、性能优势以及如何使用它们构建高效、安全的Web应用。通过本文,您将更全面地了解Rust在Web开发领域的潜力和实践。
1031 1
|
JavaScript Java 测试技术
“黄师日报”平安小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
“黄师日报”平安小程序+springboot+vue.js附带文章和源代码设计说明文档ppt
90 0
|
前端开发
Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
|
JavaScript 容器
在Vue中使用Echart图表库。【全网最简单】
在Vue中使用Echart图表库。【全网最简单】
228 0
|
OLAP 数据库 流计算
开放下载《实时数仓Hologres技术实战一本通2.0》
《实时数仓Hologres技术实战一本通2.0》从零开始,手把手教学学习实时数仓,融合实时数仓&报表、数据仓库、传统OLAP迁移等多个热门场景,助力实现服务和分析一体化实时数仓。
75370 1
开放下载《实时数仓Hologres技术实战一本通2.0》
|
安全 Java 数据库连接
SpringBoot-基础配置和属性配置详解
SpringBoot-基础配置和属性配置详解
SpringBoot-基础配置和属性配置详解