当前位置: 首页 > 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写了一个发布订阅者模式进行状态管理&…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

跨链模式:多链互操作架构与性能扩展方案

跨链模式&#xff1a;多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈&#xff1a;模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展&#xff08;H2Cross架构&#xff09;&#xff1a; 适配层&#xf…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

破解路内监管盲区:免布线低位视频桩重塑停车管理新标准

城市路内停车管理常因行道树遮挡、高位设备盲区等问题&#xff0c;导致车牌识别率低、逃费率高&#xff0c;传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法&#xff0c;正成为破局关键。该设备安装于车位侧方0.5-0.7米高度&#xff0c;直接规避树枝遮…...

前端开发者常用网站

Can I use网站&#xff1a;一个查询网页技术兼容性的网站 一个查询网页技术兼容性的网站Can I use&#xff1a;Can I use... Support tables for HTML5, CSS3, etc (查询浏览器对HTML5的支持情况) 权威网站&#xff1a;MDN JavaScript权威网站&#xff1a;JavaScript | MDN...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法

用神经网络读懂你的“心情”:揭秘情绪识别系统背后的AI魔法 大家好,我是Echo_Wish。最近刷短视频、看直播,有没有发现,越来越多的应用都开始“懂你”了——它们能感知你的情绪,推荐更合适的内容,甚至帮客服识别用户情绪,提升服务体验。这背后,神经网络在悄悄发力,撑起…...