Elasticsearch 查询语法

引言

Elasticsearch(ES)是一个高度可扩展的开源全文搜索和分析引擎。它允许你快速、实时地存储、搜索和分析大量数据。ES 强大的查询语言是其核心功能之一,它提供了多种查询类型来满足各种复杂的搜索需求。在这篇博客中,我们将深入探讨 ES 的条件查询语法,并通过具体场景来展示其应用。

基础查询类型

1. 全文搜索查询

  • match 查询:这是最常用的查询之一,适用于全文字段。例如,要在 description 字段中搜索文本 “狗子”,可以这样做:

    GET /_search
    {"query": {"match": {"description": "狗子"}}
    }
    

2. 词项级查询

  • term 查询:用于精确匹配一个字段的确切值。例如,查找 status 字段值为 “正常” 的文档:

    GET /_search
    {"query": {"term": {"status": "正常"}}
    }
    

3. 布尔查询

  • bool 查询:允许组合多个查询条件,如 mustshouldmust_notfilter。例如,查找 status 为 “正常” 且 age 大于 30 的文档:

    GET /_search
    {"query": {"bool": {"must": [{ "term": { "status": "正常" }},{ "range": { "age": { "gt": 30 }}}]}}
    }
    
  • must:所有列在 must 部分的查询条件必须匹配。它类似于逻辑操作符 AND。

  • should:列在 should 中的条件至少有一个需要匹配。它类似于逻辑操作符 OR。但是,如果没有 must 查询,则至少需要满足一个 should 查询。

  • must_not:列在 must_not 中的任何条件都不应该匹配。它类似于逻辑操作符 NOT。

  • filter:它与 must 类似,因为它包含必须匹配的条件。但不同之处在于,filter 不影响评分,只用于过滤数据。这使得它在执行范围查询或者存在/不存在检查时更高效。

  • range:range 查询用于在数字或日期字段上执行范围搜索。例如,你可以查找介于特定日期之间的文档或价格在特定范围内的商品。

实际应用场景

场景一:电子商务产品搜索

假设你管理着一个电子商务平台,需要根据用户输入的关键词搜索相关产品。在这种情况下,你可能需要结合全文搜索和过滤条件。

  • 需求:用户搜索 “智能手机”,但只想看到价格在200到400美元之间的产品。

  • 实现

    GET /products/_search
    {"query": {"bool": {"must": {"match": {"name": "智能手机"}},"filter": {"range": {"price": {"gte": 200,"lte": 400}}}}}
    }
    

场景二:日志分析

考虑一个系统日志分析的场景,你需要根据日志级别和时间范围来检索日志。

  • 需求:找到过去24小时内所有的错误(error)日志。

  • 实现

    GET /logs/_search
    {"query": {"bool": {"must": {"term": {"level": "error"}},"filter": {"range": {"@timestamp": {"gte": "now-24h","lte": "now"}}}}}
    }
    

结论

Elasticsearch 的查询语言既强大又灵活,适用于从简单的文本搜索到复杂的数据分析应用。理解和有效使用其条件查询语法对于充分利用 Elasticsearch 的潜力至关重要。以上提供的示例仅为冰山一角,ES 的真正威力在于它可以根据具体需求进行高度定制的查询。

希望本文能帮助你开始探索 Elasticsearch 的查询语言,并在你的项目中找到适合的应用场景。记住,

实践是学习的最好方式,所以不要害怕尝试和实验!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222632.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【超图】SuperMap iClient3D for WebGL/WebGPU —— 单体gltf模型与Blender中的方向对应关系

作者:taco 在很多包含动画的场景中,像模拟小人的行走、模拟火车的轨迹运行,又或者是模拟风力发电等等等。我们通常会加一些动画模型到里面。而有的时候可能会出现,这火车怎么倒着走啊!这人怎么头朝下啊。这种方向的问题…

WPS Office JS宏实现Excel转换为JSON格式数据

通过Excel JS宏,将表格中的数据以”列“形式导出为JSON数据格式。 我们在整理文档时,产品会通过Excel将功能点和功能描述分层级整理出来,有时需要将此数据导入到系统中,Web端对Json这类数据比较友好,所以这里试着使用E…

说说React中setState和replaceState的区别?

在 React 中,setState()和 replaceState()是用于更新组件状态的两个方法。它们之间有一些区别。 1)setState(newState):setState() 方法用于更新组件的状态。它接收一个新状态对象作为参数,并将新状态与当前状态合并。React 会合并状态更新并…

设计模式——代理模式(Proxy Pattern)

概述 代理模式是指为其他对象提供一种代理,以控制对这个对象的访问。代理对象在访问对象和目标对象之间起到中介作用。代理对象也可以在不修改目标对象的前提下,提供额外的功能操作,拓展目标对象的功能,比如说在目标对象的某个方法…

【Docker】进阶之路:(十二)Docker Composer

【Docker】进阶之路:(十二)Docker Composer Docker Compose 简介安装 Docker Compose模板文件语法docker-compose.yml 语法说明imagecommandlinksexternal_linksportsexposevolumesvolunes_fromenvironmentenv_fileextendsnetpiddnscap_add,c…

7+PPI+机器学习+实验,非肿瘤结合建模筛选生物标志物,可升级

今天给同学们分享一篇生信文章“Identification of diagnostic biomarkers and therapeutic targets in peripheral immune landscape from coronary artery disease”,这篇文章发表在J Transl Med期刊上,影响因子为7.4。 结果解读: 外周血中…

构建外卖小程序:技术代码实践

在这个数字化的时代,外卖小程序已经成为餐饮业的一项重要工具。在本文中,我们将通过一些简单而实用的技术代码,向您展示如何构建一个基本的外卖小程序。我们将使用微信小程序平台作为例子,但这些原理同样适用于其他小程序平台。 …

Android其他组件(单选框)

一、单选框(RadioGroup) 单选框(RadioGroup)需要配合单选按钮(RadioButton)使用,同一个单选框中的单选按钮只能被选中一个,默认是一个都不选中。 RadioGroup的常见属性&#xff08…

盈科数智视频管理平台简介

平台介绍 盈科数智视频管理平台是多种视频终端联网的标准管理平台,具有接入能力强、基础功能完善、运行实时监测、视频稳定传输、不同厂家的设备接入等能力,为智慧社区、智慧城市、安防监控提供视联网接入场景。 主要功能介绍 支持GB/T 28181,支持国标…

c#面试基础语法——as和is的区别

as as关键字用于将一个对象转换为指定类型(或其派生类型)。如果转换成功,则返回转换后的对象;如果对象不能转换为指定类型,则返回null。当使用as进行类型转换时,如果目标类型与原始对象类型不兼容&#xff…

华为配置本地端口镜像示例(1:1)

图1 配置本地端口镜像组网图 组网需求 如图1所示,某公司行政部通过Switch与外部Internet通信,监控设备Server与Switch直连。 现在希望通过Server对行政部访问Internet的流量进行监控 配置思路 在Switch进行如下配置,实现Server对所有行政…

VS的python没有pandas(VS连接mysql数据库)

import pandas as pd from sqlalchemy import create_engine# 初始化数据库连接 engine create_engine(mysqlpymysql://root:556localhost:3306/仓库)sql_chaSELECT * FROM 库房 print(sql_cha) df_read pd.read_sql_query(sql_cha, engine); print(df_read);VS连接mysql如上…

【通俗易懂】基于fabric8io操作k8s集群实战(pod、deployment、service、volume)

目录 前言一、基于fabric8io操作pod1.1 yaml创建pod1.2 fabric8io创建pod案例 二、基于fabric8io创建Service(含Deployment)2.1 yaml创建Service和Deployment2.2 fabric8io创建service案例 三、基于fabric8io操作Volume3.1 yaml配置挂载存储卷3.2 基于fa…

微信小程序封装自定义导航栏

在 app.json 文件中设置导航栏的样式: "window": {"navigationStyle": "custom" }, "usingComponents": {"nav-bar": "/components/navbar/navbar"}在app.js中获取设备顶部窗口的高度 App({onLaunch…

AUTOSAR从入门到精通-面向服务的中间件SOME/IP(五)

目录 前言 几个高频面试题目 SOME/IP与SOA的关系 some/ip、http、ftp、dns、rpc区别

Java服务网关的实现与应用:Spring Cloud Gateway、Zuul和Kong比较

引言: 随着微服务架构的兴起,服务网关作为系统的入口和出口,扮演着至关重要的角色。它能够集中处理请求、路由和过滤,提供统一的访问接口,简化了系统的复杂性。在Java领域,有多种服务网关的实现方案可供选择…

【超图】SuperMap iClient3D for WebGL/WebGPU ——暴雪

作者:taco 时隔多年北京又开始降下了特大暴雪。身为打工人的你有没有居家办公呢?反正小编我是没有。既然没有借着暴雪的功劳居家办公,那就接着雪来输出一篇博客好了。基于SuperMap iClient3D for WebGL/WebGPU 实现暴雪仿真效果。 先来看下效…

threejs ShapeGeometry 自定义贴图的uv坐标

问题描述: 由于一些原因,要绘制一个长方形,但是这个长方形并不是 PlaneGeometry,而是一个ShapeGeometry。但是同样的贴图,同样的形状,贴图贴在PlaneGeometry上时可以正常显示,但是贴在ShapeGeo…

了解如何在linux使用podman管理容器

本章主要介绍使用 podman 管理容器。 了解什么是容器,容器和镜像的关系 安装和配置podman 拉取和删除镜像 给镜像打标签 导出和导入镜像 创建和删除镜像 数据卷的使用 管理容器的命令 使用普通用户管理容器 使用普通用户管理容器 对于初学者来说,不太容…

squid SSL https

在 Squid 服务中配置 SSL Bumping 建议在 Squid 服务中配置 SSL Bumping 以处理加密连接。如果未配置 SSL Bumping,则代理服务器无法干预加密连接建立过程。在这种情况下,Kaspersky Web Traffic Security(反病毒和反网络钓鱼)的保…