当前位置: 首页 > news >正文

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 查询

有时一个匹配项可以覆盖多个文本字段。 在这种情况下&#xff0c;你可以使用 combined_fields 查询来搜索多个文本字段&#xff0c;就好像它们的值实际上已被索引到一个组合字段中一样。 除此之外&#xff0c;combined_fields 的主要好处是强大且易于理解的评分算法。这种做法也…...

uart 子系统

串口硬件储备知识&#xff1a; uart 在Linux 应用层的体现及使用 uart 就是串口&#xff0c;它也是属于字符设备中的一种&#xff0c;众所周知 字符设备都会在/dev/ 目录下创建节点&#xff0c;串口所创建的节点名都是以tty* 为开头&#xff0c;例如下面这些节点&#xff1a…...

SpringBoot 整合EasyExcel详解

一、概述 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存&#xff0c;poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题&#xff0c;但POI还是有一些缺陷&#xff0c;比如07版Excel解压缩以及解压后存储都是在内…...

VScode+cuda编程:常见环境问题

VScodecuda&#xff1a;常见环境配置问题1、VScode终端问题(PS)2、编译问题(CUDA版本过低)3、nvcc编译问题(arch架构)1、VScode终端问题(PS) 问题描述&#xff1a; 在VScode下打开终端执行nvcc指令&#xff0c;发现执行不了&#xff0c;但是在外部终端powershell和cmd都可以。…...

简单实用的内网穿透实现教程

内网穿透&#xff0c;字面理解就是网络地址穿透&#xff0c;是一种比较常用的将内网地址转换成公网地址的方式。通过内网穿透&#xff0c;可以将本地内网局域网提供给外网公网上访问&#xff0c;在外网也能连接访问内网主机和应用&#xff0c;当用户有日常远程和异地外网访问的…...

makefile案例学习

makefile案例学习 很多时候&#xff0c; 我们在git clone完一个project之后&#xff0c;就会让我们使用make命令进行项目的构建。这个make命令的背后就是按照了Makefile文件定义的格式去完成项目构建。 因此Makefile的作用就是帮助程序员进行项目的构建&#xff0c;它按照项目…...

MySQL性能优化六 事物隔离级别与锁机制

概述 我们的数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题&#xff0c;为了解决多事务并发问题&#…...

四数之和-力扣18-java排序+双指针

一、题目描述给你一个由 n 个整数组成的数组 nums &#xff0c;和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] &#xff08;若两个四元组元素一一对应&#xff0c;则认为两个四元组重复&#xff09;&#xff1a…...

操作系统开发:BIOS/MBR基础与调试

这里在实验之前需要下载 Bochs-win32-2.6.11 作者使用的是Linux版本的&#xff0c;在Linux写代码不太舒服&#xff0c;所以最好在Windows上做实验&#xff0c;下载好虚拟机以后还需要下载Nasm汇编器&#xff0c;以及GCC编译器&#xff0c;为了能够使用DD命令实现磁盘拷贝&#…...

华为OD机试真题JAVA实现【数组合并】真题+解题思路+代码(20222023)

🔥系列专栏 华为OD机试(JAVA)真题目录汇总华为OD机试(Python)真题目录汇总华为OD机试(C++)真题目录汇总华为OD机试(JavaScript)真题目录汇总文章目录 🔥系列专栏题目输入输出示例一输入输出示例二输入输出解题思路核心知识点...

说说Real DOM和Virtual DOM的区别?优缺点?

说说Real DOM和Virtual DOM的区别&#xff1f;优缺点&#xff1f;Real DOM(真实的DOM)真实dom的优缺点&#xff1f;Virtual DOM(虚拟的DOM)虚拟dom的优缺点&#xff1f;两者的区别Real DOM(真实的DOM) 在页面渲染出的每个节点都是一个真实的DOM结构 <div class"root&…...

使用脚本以可读的 JSON 格式显示 curl 命令输出

在我们经常调试微服务或者使用 Elasticsearch API 时&#xff0c;经常会使用curl 来进行调试。但是有时我们的输出不尽如意。显示的不是一 pretty 格式进行输出的。我们有时还必须借助于其他的一些网站工具&#xff0c;比如 Best JSON Formatter and JSON Validator: Online JS…...

计算机网络9:HTTP和HTTPS的区别

1.HTTP和HTTPS的区别 &#xff08;1&#xff09;安全性 HTTP是超文本传输协议&#xff0c;信息传输存在安全问题HTTPS是安全套接字超文本传输协议&#xff0c;在TCP和HTTP之间加入了SSL/TLS安全协议&#xff0c;进行加密传输 &#xff08;2&#xff09;连接步骤HTTP建立相对简…...

Spring+SpringMVC+SpringBoot+MyBatis面试题

什么是Spring框架&#xff1f;使用Spring框架的好处是什么&#xff1f;Spring是一款开源的轻量级Java开发框架&#xff0c;可以提高开发人员的开发效率以及系统的可维护性。Spring框架是很多模块的集合&#xff0c;使用这些模块可以很方便地协助我们进行开发&#xff0c;比如说…...

ContextCapture Master 倾斜摄影测量实景三维建模技术

ContextCapture实景建模大师是一套无需人工干预&#xff0c;通过影像自动生成高分辨率的三维模型的软件解决方案。它集合了全球最先进数字影像处理、计算机虚拟现实以及计算机几何图形算法&#xff0c;在易用性、数据兼容性、运算性能、友好的人机交互及自由的硬件配置兼容性等…...

MySQL事务

文章目录MySQL事务事务的四个特性 ACID事务提交的类型事务的使用MySQL事务 事务是什么&#xff1f; 事务就是一组逻辑操作单元&#xff0c;是数据从一种状态变成另外一种状态。整个单元有一个或多个SQL语句构成&#xff0c;在这个操作单元中&#xff0c;每一个SQL语句相互依赖…...

CData Drivers for Acumatica

CData Drivers for Acumatica Acumatica的CData驱动程序为用户提供了使用AcumaticaERP数据的便捷途径&#xff0c;该数据来自商业智能、分析、定制应用程序、报告以及ETL。通过JDBC、ADO.NET和ODBC等标准驱动程序&#xff0c;以及与PowerShell、Power BI、Excel、SSIS等流行应用…...

智慧税务+数据可视化:企业财务管理告别难题

一、引言在发展社会主义市场经济的过程中&#xff0c;税收承担着组织财政收入、调控经济、调节社会分配的职能。中国每年财政收入的90%以上来自税收&#xff0c;其地位和作用越来越重要&#xff0c;可称之为国家经济的“晴雨表”&#xff0c;有效进行税务管理、充分挖掘税务大数…...

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状态管理方案选择的?

前言&#xff1a;最近接触到一种新的&#xff08;对我个人而言&#xff09;状态管理方式&#xff0c;它没有采用现有的开源库&#xff0c;如redux、mobx等&#xff0c;也没有使用传统的useContext&#xff0c;而是用useState useEffect写了一个发布订阅者模式进行状态管理&…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

React---day11

14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store&#xff1a; 我们在使用异步的时候理应是要使用中间件的&#xff0c;但是configureStore 已经自动集成了 redux-thunk&#xff0c;注意action里面要返回函数 import { configureS…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Python Ovito统计金刚石结构数量

大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...