elasticsearch结构化搜索
Elasticsearch的结构化搜索(Structured Search)是指对具有明确格式和结构的数据进行搜索的过程。这类数据包括日期、时间、数字、布尔值等,它们都有精确的格式,可以进行逻辑操作,比如比较数值范围或判断值的大小。结构化数据也可以包括具有离散集合的文本字段,例如预定义的标签集合或具有固定选项的字段。
### 结构化搜索的关键特点:
1. **精确匹配**:结构化搜索通常用于查找与查询条件完全匹配的项。
2. **范围查询**:可以对数字或日期类型的字段执行范围查询。
3. **逻辑操作**:可以对结构化字段执行逻辑操作,如等于(=)、不等于(!=)、大于(>)、小于(<)等。
4. **无相关性评分**:结构化搜索的结果通常不涉及相关性评分,因为它们是确定性的匹配。
5. **使用Term查询**:对于结构化数据,Elasticsearch主要使用Term查询来执行精确匹配。
### 结构化搜索的常见查询类型:
- **Term Query**:用于执行精确匹配,适用于结构化字段。
- **Terms Query**:用于查找包含任一指定值的文档。
- **Range Query**:用于根据数值或日期范围筛选文档。
- **Prefix Query**:用于匹配以特定前缀开始的项,适用于结构化文本字段。
- **Wildcard Query**:用于执行通配符搜索,可以匹配任意字符或任意数量的字符。
- **Regexp Query**:用于执行正则表达式匹配。
- **Exists Query**:用于查找包含指定字段的文档,无论字段的值是什么。
### 示例:
以下是一些结构化搜索的查询示例:
**1. 布尔值查询**:
```json
GET /products/_search
{
"query": {
"term": {
"available": true
}
}
}
```
这个查询将返回所有`available`字段值为`true`的文档。
**2. 数值范围查询**:
```json
GET /products/_search
{
"query": {
"range": {
"price": {
"gte": 10,
"lte": 50
}
}
}
}
```
这个查询将返回所有`price`字段值在10到50之间的文档。
**3. 日期范围查询**:
```json
GET /products/_search
{
"query": {
"range": {
"date": {
"gte": "2020-01-01",
"lt": "2020-12-31"
}
}
}
}
```
这个查询将返回所有`date`字段值在2020年1月1日到2020年12月31日之间的文档。
结构化搜索在Elasticsearch中非常有用,特别是在需要对具有明确格式的数据执行精确匹配或范围查询的场景中。通过使用合适的查询类型,可以有效地检索和管理结构化数据。
Elasticsearch支持两种主要类型的搜索:基于词项(Term-based)的搜索和基于全文(Full-text)的搜索。这两种搜索方式适用于不同的场景和需求。
### 基于词项的搜索
基于词项的搜索适用于精确匹配的场景,如搜索特定的关键词或短语。这种搜索方式不会对文本进行分词处理,而是直接按照文本的原样进行匹配。
**特点**:
- 通常用于`keyword`类型的字段。
- 不进行文本分析,即不会应用分词器和过滤器。
- 匹配整个词项,不区分大小写。
- 适用于结构化数据,如ID、状态码、标签等。
**查询示例**:
```json
GET /my_index/_search
{
"query": {
"term": {
"status.keyword": {
"value": "active"
}
}
}
}
```
在这个例子中,我们使用`term`查询来搜索`status`字段中精确匹配"active"的文档。
### 基于全文的搜索
基于全文的搜索适用于对文本内容进行复杂查询的场景,如模糊搜索、短语搜索或相关性搜索。这种搜索方式会对文本进行分词处理,然后基于分词后的词项进行匹配。
**特点**:
- 通常用于`text`类型的字段。
- 应用文本分析,包括分词器和过滤器。
- 可以进行模糊匹配、短语匹配和相关性评分。
- 适用于非结构化数据,如文章、描述、评论等。
**查询示例**:
```json
GET /my_index/_search
{
"query": {
"match": {
"content": "Elasticsearch guide"
}
}
}
```
在这个例子中,我们使用`match`查询来搜索`content`字段中包含"Elasticsearch"和"guide"的文档。
### 区别和使用场景
- **数据类型**:基于词项的搜索通常用于`keyword`类型字段,而基于全文的搜索用于`text`类型字段。
- **文本分析**:基于词项的搜索不进行文本分析,而基于全文的搜索会应用分词器和过滤器。
- **匹配方式**:基于词项的搜索进行精确匹配,基于全文的搜索可以进行模糊匹配和短语匹配。
- **适用场景**:基于词项的搜索适用于需要精确匹配的场景,如状态码、枚举值等;基于全文的搜索适用于需要复杂文本分析的场景,如搜索引擎、内容推荐等。
理解这两种搜索方式的区别和适用场景对于设计和实现有效的Elasticsearch搜索策略至关重要。通过合理选择字段类型和查询方式,可以优化搜索效果和性能。
相关文章:
elasticsearch结构化搜索
Elasticsearch的结构化搜索(Structured Search)是指对具有明确格式和结构的数据进行搜索的过程。这类数据包括日期、时间、数字、布尔值等,它们都有精确的格式,可以进行逻辑操作,比如比较数值范围或判断值的大小。结构…...
街道网格宣传稿件投稿我知道了好方法
作为街道信息宣传员,我的日常是将街道的每一项重要活动、每一份温暖故事编织成文字,传递给公众。这份工作既充满挑战又极具意义,但在最初,我却在这份看似简单的任务上屡屡受阻。那时,我的投稿方式单一且传统——依赖电子邮件,将稿件发送至各大媒体的投稿箱。我本以为,只要内容足…...
电脑有线无线一起用怎么设置
要在电脑上同时使用有线和无线网络,可以通过以下几种方法进行设置: 调整网络高级设置: 进入“网络和共享中心”。点击“更改适配器设置”。按键盘Alt键调出菜单栏,然后点击“高级→高级设置”。在“适配器和绑定”标签页下可以对可…...
通过LotusScript中的NotesDateTime类来进行时间计算
大家好,才是真的好。 今天我们介绍的是时间日期处理,其实以前也讲过,主要是通过LotusScript中的NotesDateTime类来进行时间计算。 但是这里也存在一个问题:就是时间日期类的比较只能计算出秒,不能计算出毫秒。 毕竟…...
【前端面经】数组算法题解
目录 题目一:两数之和题目二:最长无重复字符子串题目三:合并两个有序数组题目四:寻找数组中的峰值 题目一:两数之和 描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目…...
java架构设计-COLA
参考:https://github.com/alibaba/COLA 架构 要素:组成架构的重要元素 结构:要素直接的关系 意义:定义良好的结构,治理应用复杂度,降低系统熵值,改善混乱状态 创建COLA应用: mvn …...
【进阶篇-Day3:JAVA接口新特性、代码块、内部类、Lambda表达式、组件等的介绍】
目录 1、接口新特性1.1 JDK8的新特性1.2 JDK9的新特性 2、代码块2.1 代码块的定义2.2 代码块的分类 3、内部类3.1 内部类的定义3.2 内部类成员访问3.3 学习内部类的原因3.4 内部类的分类3.4.1 成员内部类3.4.2 静态内部类3.4.3 局部内部类3.4.4 匿名内部类(1&#x…...
72-UDP协议工作原理及实战
#ifndef UDPCOMM_H #define UDPCOMM_H#include <QMainWindow> #include <QUdpSocket> // 用于发送和接收UDP数据报 #include <QtNetwork>QT_BEGIN_NAMESPACE namespace Ui { class udpComm; } QT_END_NAMESPACEclass udpComm : public QMainWindow {Q_OBJECT…...
数据结构——顺序表的实现
数据结构——顺序表的实现 一 关于顺序表的简单知识二 动态顺序表 一 关于顺序表的简单知识 1.顺序表的底层结构是数组,在数组的基础上增加了增,删,查,改等方法。 2.顺序表的分类:静态顺序表和动态顺序表 静态顺序表的…...
【牛客面试必刷TOP101】Day33.BM70 兑换零钱(一)和BM71 最长上升子序列(一)
文章目录 前言一、BM70 兑换零钱(一)题目描述题目解析二、BM71 最长上升子序列(一)题目描述题目解析总结 前言 一、BM70 兑换零钱(一) 题目描述 描述: 给定数组arr,arr中所有的值都为正整数且不重复。每个值代表一种面值的货币,每种面值的货币…...
重构与优化-优化函数调用(5)
Rename Method Rename Method(“函数改名”),它的核心目标是通过修改方法的名称来更好地反映其功能,提高代码的可读性和维护性。这项重构不仅适用于Java,也同样适用于其他面向对象的编程语言。下面是进行Rename Method重构时的一些关键点和步骤: 关键目的 提升代码清晰…...
6月18日(周二)A股行总结:A股震荡收涨,车路云概念全日强势,10年、30年国债期货齐创新高
车路云概念股发力上涨,中海达、华铭智能等多股20CM涨停。半导体板块走强,中芯国际港股上涨近3% 。白酒板块下跌,贵州茅台跌1.3% 。30年期及10年期国债期货主力合约均创上市以来新高。 周二,A股全日窄幅震荡 沪指收涨0…...
今年的618,似乎很平淡!
电商平台取消预售制度的第一个大促,快递业表现如何? 今年的618大促与往年有些不同,自4月起,天猫、京东、快手等主流平台相继官宣取消预售,打出“现货开卖”标签,这意味着消费者不用再被“烧脑”的优惠计算…...
嵌入式中间件_3.嵌入式中间件的一般架构
根据嵌入式中间件的不同类型和其应用对象的不同,其架构也有所不同,通常嵌入式中间件没有统一的架构,这里仅仅列举两种中间件架构。 1.消息中间件 1.1消息中间件原理架构 消息中间件是消息传输过程中保存消息的一种容器。它将消息从它的源中…...
Java基础 - 练习(二)打印菱形
Java基础练习 打印菱形,先上代码: // 方法一:基础,好理解 public static void diamond() {//控制行数for (int i 1; i < 4; i) {//空格的个数for (int k 1; k < 4 - i; k) {System.out.print(" ");}//控制星星…...
链表OJ--超详细解析
链表OJ 文章目录 链表OJ1. 反转链表2. 返回K值3. 链表的中间节点4. 回文链表5. 相交链表6. 带环链表6.1 为什么一定会相遇,有没有可能会错过,或者出现永远追不上的情况,请证明6.2 slow一次走一步,fast如果一次走3步,走…...
JavaFX 分隔符
Separator类表示水平或垂直分隔线。它分割元素,不产生任何动作。 我们可以设计风格,应用视觉效果,并为分隔符设置动画。 默认情况下,分隔符是水平的。我们可以使用setOrientation方法改变它的方向。 Separator类扩展了Node类。…...
mysql安装配置教程(Linux+Windows)
mysql安装配置教程(LinuxWindows) 文章目录 mysql安装配置教程(LinuxWindows)摘要在 Linux 上安装和配置 MySQL1. 安装 MySQLUbuntu/DebianCentOS/RHEL 2. 配置 MySQL初始化 MySQL登录 MySQL创建数据库和用户配置 MySQL 文件 3. 测…...
MySQL数据库与基本操作(增删改查)
一、数据库的基本概念 数据库要学习的四个基本概念,主要是:数据、数据库系统、数据库、数据管理系统。数据(Date)是描述事物的记录,数据库系统(DBS),数据库管理系统(DBMS…...
【学习总结】SpringBoot中使用单例模式+ScheduledExecutorService实现异步多线程任务(若依源码学习)
最近在学习若依这个开源项目,发现他记录登录日志的时候使用了异步线程去记录日志,觉得这个方案也挺不错的,在此学习记录下来,以后在工作中也能提供一种思路,其他小伙伴如果有觉得不错的方案也可以在评论区里留言&#…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
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* …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
