Elasticsearch:Combined fields 查询
有时一个匹配项可以覆盖多个文本字段。 在这种情况下,你可以使用 combined_fields 查询来搜索多个文本字段,就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外,combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也有类似于 copy_to 的处理方法。
combined_fields 查询属于全文查询组,它允许你搜索已分析的文本字段(例如,错误消息)。
当字段映射中没有指定 search_analyzer 时,分析器将默认为索引时应用于该字段的分析器,并使用该分析器来处理查询字符串。 如果在字段映射中指定了 search_analyzer,则此分析器将是用于处理查询字符串的分析器。
分析器只是一个由三个更小的组件构建而成的组件:字符过滤器、标记器和标记过滤器,无论是内置的还是自定义的。 这些构建块被内置的分析器预先打包到各种语言和各种文本的分析器中。 Elasticsearch 还公开了各个构建块,允许将它们合并以创建新的自定义分析器。 你可以在此处阅读有关分析器的更多信息。
combined fields 查询支持搜索多个文本字段,就好像它们的内容已被索引到一个组合字段中一样。 该查询采用把输入字符串当做以 term 为中心的输入:首先它将查询字符串分析为单独的 term,然后在任何字段中查找每个词。 当匹配可能跨越多个文本字段(例如文章的 title、abstract 和 body)时,此查询特别有用。比如我们写入如下的一个文档:
PUT combined_index/_doc/1
{"title": "Elasticsearch database is very useful","abstract": "This is a very popular system nowadays","body": "Elasticsearch is today one of the most popular database systems available today. This Elasticsearch tutorial provides new users with the prerequisite knowledge and tools to start using Elasticsearch. It includes installation instructions, and initial indexing and data handling instructions."
}
我们可以使用如下的搜索来针对 tille, abstract 及 body 同时进行查询:
GET combined_index/_search?filter_path=**.hits
{"query": {"combined_fields": {"query": "database systems","fields": ["title", "abstract", "body"],"operator": "and"}}
}
上面命令搜索返回的结果为:
{"hits": {"hits": [{"_index": "combined_index","_id": "1","_score": 0.6877647,"_ignored": ["body.keyword"],"_source": {"title": "Elasticsearch database is very useful","abstract": "This is a very popular system nowadays","body": "Elasticsearch is today one of the most popular database systems available today. This Elasticsearch tutorial provides new users with the prerequisite knowledge and tools to start using Elasticsearch. It includes installation instructions, and initial indexing and data handling instructions."}}]}
}
乍一看,是不是有点觉得像 mulit-match 查询的样子啊?这在我们下面来进行比较。
combined_fields 查询采用基于概率相关性框架:BM25 及以后中描述的简单 BM25F 公式的原则性评分方法。 在对匹配项进行评分时,查询会跨字段组合术语和集合统计信息来对每个匹配项进行评分,就好像指定字段已被索引到单个组合字段中一样。 这个得分是最好的尝试; combined_fields 做了一些近似,分数不会完全服从 BM25F 模型。
警告:字段数量限制。默认情况下,查询可以包含的子句数量是有限制的。 此限制由 indices.query.bool.max_clause_count 设置定义,默认为 4096。对于combined fileds 查询,子句数计算为字段数乘以术语数。
这个查询有什么用?
combined_fields 查询使你能够搜索多个文本字段,就好像它们的索引值已被索引到一个组合字段中一样。 combined_fields 查询在匹配可能涵盖多个文本字段时很方便。
combined_fields 查询通过采用以 term 为中心的查询视图来工作。 它将查询字符串分析为单个术语,然后在任何字段中搜索每个术语。 可以使用此查询代替跨字段 multi_match 查询。 它提供了更直接的行为和更强大的评分系统。 combined_fields 查询仅适用于具有完全相同的搜索分析器的字段,而 multi_match 查询不关心字段是否具有相同的搜索分析器。
字段分数加权
字段分数加权是 combined fields 模型而定的。 例如,如果标题 title 的提升为 2,则计算分数时就好像 title 中的每个术语在合成组合字段中出现了两次一样。
GET /_search
{"query": {"combined_fields" : {"query" : "distributed consensus","fields" : [ "title^2", "body" ] }}
}
如上所示,当我们想对 title 字段进行加权时,我们可以使用 ^ 符号来进行表述。
注意:combined_fields 查询要求字段提升大于或等于 1.0。 字段增强允许是浮点数,比如 2.2 等。
combined_fields 的参数
fields
(必需,字符串数组)要搜索的字段列表。 允许字段通配符模式。 仅支持文本字段,并且它们必须都具有相同的搜索分析器。
query
(必需,字符串)要在提供的 <fields> 中搜索的文本。
combined_fields 查询在执行搜索之前分析提供的文本。
auto_generate_synonyms_phrase_query
(可选,布尔值)如果为真,则会自动为 multi-term 同义词创建 match phrase 查询。默认为 true。
有关系的例子,请参看 Use synonyms with match query。
Operator
(可选,字符串)布尔逻辑,用于解释查询值中的文本。 有效值为:
or(默认)
例如,database systems 的查询值被解释为 database OR systems
and
例如,database systems 的查询值被解释为 database AND systems
minimum_should_match
(可选,字符串)要返回的文档必须匹配的最小子句数。 有关有效值和更多信息,请参阅 minimum_should_match 参数。
zero_terms_query
(可选,字符串)指示如果分析器删除所有分词时是否不返回任何文档,例如在使用 stop 过滤器时。 有效值为:
none(默认)
如果分析器删除所有分词,则不会返回任何文档。
all
返回所有文档,类似于 match_all 查询。
有关示例,请参见 Zero terms query 。
和 multi-match 查询比较
combined_fields 查询提供了一种跨多个文本字段进行匹配和评分的原则性方法。 为了支持这一点,它要求所有字段都具有相同的搜索分析器。
如你想要一个处理不同类型字段(如 keyword 或 numbers)的查询,那么 multi_match 查询可能更合适。 它支持文本和非文本字段,并接受不共享同一分析器的文本字段。
主要的 multi_match 模式 best_fields 和 most_fields 采用以字段为中心的查询视图。 相比之下,combined_fields 是以 term 为中心的:operator 和 minimum_should_match 应用于每个 term,而不是每个字段。 具体来说,像这样的查询:
GET /_search
{"query": {"combined_fields" : {"query": "database systems","fields": [ "title", "abstract"],"operator": "and"}}
}
被执行为:
+(combined("database", fields:["title" "abstract"]))
+(combined("systems", fields:["title", "abstract"]))
换句话说,每个术语必须出现在至少一个字段中才能匹配文档。
cross_fields multi_match 模式也采用以术语为中心的方法,并为每个术语应用 operator 和 minimum_should_match。 combined_fields 相对于 cross_fields 的主要优势是其基于 BM25F 算法的强大且可解释的评分方法。
注意:Custom similarities
combined_fields 查询目前只支持 BM25 相似度,这是默认的,除非配置了 Custom similarities。 Per-field similarities 也是不允许的。 在任何一种情况下使用 combined_fields 都会导致错误。
相关文章:
Elasticsearch:Combined fields 查询
有时一个匹配项可以覆盖多个文本字段。 在这种情况下,你可以使用 combined_fields 查询来搜索多个文本字段,就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外,combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也…...
uart 子系统
串口硬件储备知识: uart 在Linux 应用层的体现及使用 uart 就是串口,它也是属于字符设备中的一种,众所周知 字符设备都会在/dev/ 目录下创建节点,串口所创建的节点名都是以tty* 为开头,例如下面这些节点:…...
SpringBoot 整合EasyExcel详解
一、概述 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内…...
VScode+cuda编程:常见环境问题
VScodecuda:常见环境配置问题1、VScode终端问题(PS)2、编译问题(CUDA版本过低)3、nvcc编译问题(arch架构)1、VScode终端问题(PS) 问题描述: 在VScode下打开终端执行nvcc指令,发现执行不了,但是在外部终端powershell和cmd都可以。…...
简单实用的内网穿透实现教程
内网穿透,字面理解就是网络地址穿透,是一种比较常用的将内网地址转换成公网地址的方式。通过内网穿透,可以将本地内网局域网提供给外网公网上访问,在外网也能连接访问内网主机和应用,当用户有日常远程和异地外网访问的…...
makefile案例学习
makefile案例学习 很多时候, 我们在git clone完一个project之后,就会让我们使用make命令进行项目的构建。这个make命令的背后就是按照了Makefile文件定义的格式去完成项目构建。 因此Makefile的作用就是帮助程序员进行项目的构建,它按照项目…...
MySQL性能优化六 事物隔离级别与锁机制
概述 我们的数据库一般都会并发执行多个事务,多个事务可能会并发的对相同的一批数据进行增删改查操作,可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题&#…...
四数之和-力扣18-java排序+双指针
一、题目描述给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (若两个四元组元素一一对应,则认为两个四元组重复):…...
操作系统开发:BIOS/MBR基础与调试
这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的,在Linux写代码不太舒服,所以最好在Windows上做实验,下载好虚拟机以后还需要下载Nasm汇编器,以及GCC编译器,为了能够使用DD命令实现磁盘拷贝&#…...
华为OD机试真题JAVA实现【数组合并】真题+解题思路+代码(20222023)
🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出示例二输入输出解题思路核心知识点...
说说Real DOM和Virtual DOM的区别?优缺点?
说说Real DOM和Virtual DOM的区别?优缺点?Real DOM(真实的DOM)真实dom的优缺点?Virtual DOM(虚拟的DOM)虚拟dom的优缺点?两者的区别Real DOM(真实的DOM) 在页面渲染出的每个节点都是一个真实的DOM结构 <div class"root&…...
使用脚本以可读的 JSON 格式显示 curl 命令输出
在我们经常调试微服务或者使用 Elasticsearch API 时,经常会使用curl 来进行调试。但是有时我们的输出不尽如意。显示的不是一 pretty 格式进行输出的。我们有时还必须借助于其他的一些网站工具,比如 Best JSON Formatter and JSON Validator: Online JS…...
计算机网络9:HTTP和HTTPS的区别
1.HTTP和HTTPS的区别 (1)安全性 HTTP是超文本传输协议,信息传输存在安全问题HTTPS是安全套接字超文本传输协议,在TCP和HTTP之间加入了SSL/TLS安全协议,进行加密传输 (2)连接步骤HTTP建立相对简…...
Spring+SpringMVC+SpringBoot+MyBatis面试题
什么是Spring框架?使用Spring框架的好处是什么?Spring是一款开源的轻量级Java开发框架,可以提高开发人员的开发效率以及系统的可维护性。Spring框架是很多模块的集合,使用这些模块可以很方便地协助我们进行开发,比如说…...
ContextCapture Master 倾斜摄影测量实景三维建模技术
ContextCapture实景建模大师是一套无需人工干预,通过影像自动生成高分辨率的三维模型的软件解决方案。它集合了全球最先进数字影像处理、计算机虚拟现实以及计算机几何图形算法,在易用性、数据兼容性、运算性能、友好的人机交互及自由的硬件配置兼容性等…...
MySQL事务
文章目录MySQL事务事务的四个特性 ACID事务提交的类型事务的使用MySQL事务 事务是什么? 事务就是一组逻辑操作单元,是数据从一种状态变成另外一种状态。整个单元有一个或多个SQL语句构成,在这个操作单元中,每一个SQL语句相互依赖…...
CData Drivers for Acumatica
CData Drivers for Acumatica Acumatica的CData驱动程序为用户提供了使用AcumaticaERP数据的便捷途径,该数据来自商业智能、分析、定制应用程序、报告以及ETL。通过JDBC、ADO.NET和ODBC等标准驱动程序,以及与PowerShell、Power BI、Excel、SSIS等流行应用…...
智慧税务+数据可视化:企业财务管理告别难题
一、引言在发展社会主义市场经济的过程中,税收承担着组织财政收入、调控经济、调节社会分配的职能。中国每年财政收入的90%以上来自税收,其地位和作用越来越重要,可称之为国家经济的“晴雨表”,有效进行税务管理、充分挖掘税务大数…...
Ansible中常用的模块
目录 一、Ansible Ad-Hoc命令集 1 Ad-hoc 使用场景 2 Ansible的并发特性 3 Ansible-doc用法 4 ansible命令运行方式及常用参数 5 ansible的基本颜色代表 6 ansible中的常用模块 command模块 shell模块 script模块 copy模块 fetch模块 unarchive模块 archive模块…...
问:你是如何进行react状态管理方案选择的?
前言:最近接触到一种新的(对我个人而言)状态管理方式,它没有采用现有的开源库,如redux、mobx等,也没有使用传统的useContext,而是用useState useEffect写了一个发布订阅者模式进行状态管理&…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
五子棋测试用例
一.项目背景 1.1 项目简介 传统棋类文化的推广 五子棋是一种古老的棋类游戏,有着深厚的文化底蕴。通过将五子棋制作成网页游戏,可以让更多的人了解和接触到这一传统棋类文化。无论是国内还是国外的玩家,都可以通过网页五子棋感受到东方棋类…...
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法
用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...
C# WPF 左右布局实现学习笔记(1)
开发流程视频: https://www.youtube.com/watch?vCkHyDYeImjY&ab_channelC%23DesignPro Git源码: GitHub - CSharpDesignPro/Page-Navigation-using-MVVM: WPF - Page Navigation using MVVM 1. 新建工程 新建WPF应用(.NET Framework) 2.…...
代理服务器-LVS的3种模式与调度算法
作者介绍:简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们上一章介绍了Web服务器,其中以Nginx为主,本章我们来讲解几个代理软件:…...
