Elasticsearch的简单学习(二)Elasticsearch查询命令入门

【ES】--Elasticsearch DSL的简单查询 ES中常见的查询类型分为简单查询、复合查询、聚合查询等。这里基于这些查询进行详细的介绍。**term查询**:单词查询,在字段的倒排索引(发生分词)或者直接在字段值(未发生分词)中查找条件值,只要找到这个条件值就算匹配上,得分为1。**terms查询**:多个单词查询,效果为 多个 term 或者的逻辑。**match查询**:分词后搜索。比如分词后有N个分词,只要匹配上其中一个就可以返回数据。 阅读详情

Elasticsearch类似于一个用来存储文档的数据库。所以学习它的查询语句时我们和mysql的做个对比。

Elasticsearch的索引相当于mysql中的数据库;

Elasticsearch的类型相当于mysql的表明;

Elasticsearch的查询风格类似于restful的风格。

1.添加数据

POST /test/article/1
{
  "title":"java学习教程",
  "content":"这是一本关于java的书",
  "author":"王五",
  "age":30
}

test  为索引
article 为类型
1 为ID

如果返回的结果如下说明数据创建成功:

{
  "_index" : "test",
  "_type" : "article",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

2.删除数据

DELETE /test/article/1

如果删除的id不存在,则会报not_found的错误

3.修改数据

PUT /test/article/1
{
  "title":"java学习教程",
  "content":"这是一本关于java的书",
  "author":"王五",
  "age":31
}

如果已经存在ID为1的数据,则会执行更新操作。如果不存在则执行insert操作。



响应体:
{
  "_index" : "test",
  "_type" : "article",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 6,
  "_primary_term" : 1
}

重点关注version的值变成了2,插入一次更新一次说以变成了2

4.查询

查询全部数据

GET /test/article/_search
{
  "query": {
    "match_all": {}
  }
}

查询全部数据,但是只查询部分字段

GET /test/article/_search
{
  "query": {"match_all": {}},
  "_source": ["title","content"]
}

分页查询

GET /test/article/_search
{
  "query": {
    "match_all": {}
  },
  "from": 0,
  "size": 2
}

查询时按照某个字段排序

GET /test/article/_search
{
  "query": {
    "match_all": {}
  },
  "sort": [
    {
      "age": {
        "order": "asc"
      }
    }
  ]
}

查询title中包含java的数据(这种查询方式会将内容中包含这或者  关于字的所有数据查询出来。同时会将匹配度最高的显示在第一条)。如果想要查询出包含这并且包含关于的数据时。可以使用operator参数。

GET /test/article/_search
{
  "query": {
    "match": {
      "content": "这 关于"
    }
  }
}
GET /test/article/_search
{
  "query": {
    "match": {
      "content": {
        "query": "这 关于",
        "operator": "and"
      }
    }
  }
}

同时我们可以使用minimum_should_match来控制匹配的百分比

GET /test/article/_search
{
  "query": {
    "match": {
      "content": {
        "query": "这 关 于",
        "minimum_should_match": "75%"
      }
    }
  }
}


这里查询的条件为三个。所以会向下取整为66.6%。当满足66.6%的匹配度时就会查询出来

精确查询

先添加一条数据

POST /test/article/5
{
  "title":"java",
  "content":"这java是编程语言",
  "author":"java",
  "age":27
}

我们想查询出所有包含这和java 的数据。并且这两个查询条件不能被其他字隔开

GET /test/article/_search
{
  "query": {
    "match_phrase": {
      "content":  "这java"
      
    }
  }
}

其实这就是match_phrase和match的区别,match会进行文字分割。比如我们想查询“中国杭州”,那么match会分割成“中国”和“杭州”。会查询出包含“中国”或者“杭州”的数据。

但是match_phrase只会查询出包含了“中国杭州”的数据,并且中间不能被其他字符隔开。

多字段同条件查询

GET /test/article/_search
{
  "query": {
    "multi_match": {
      "query":  "这java",
      "type":  "best_fields", 
      "fields": [ "title", "content" ],
      "minimum_should_match": "30%"
    }
  }
}

完全精确匹配

查询年龄为20的数据

GET /test/article/_search
{
  "query": {
    "term": {
      "age": "20"
    }
  }
}

terms和term的区别:

 term相当于mysql中的等于,而terms相当于mysql中的in

大于小于查询

GET /test/article/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 20,
        "lte": 25
      }
    }
  }
}
  • gte 大等于
  • lte 小等于

获取当前所有的索引:

GET _cat/indices

Elasticsearch:ES QL 入门 - Python Notebook ⚠️ 不要在生产环境中使用 ES|QL。此功能处于技术预览阶段,可能会在未来版本中更改或删除。Elastic 将努力解决任何问题,但技术预览版中的功能不受官方 GA 功能的支持 SLA 的约束。ES|QL 将在 8.13 正式发布(以官方发布为准)。在一下的展示中,我将使用 Elastic Stack 8.12 来进行展示。 阅读详情

相关推荐

Elasticsearch 认识(二):为什么我们要用ES以及什么时候我们应该使用ES

前言 根据一段时间,断断续续的学习之后,对Elasticsearch的已经有了一定的初步了解。因此,我们就对在前文的了解上,对Es有了更加全面的看法。 我们为什么要用ES 随着对ES的接触的加深,我们便会发现。其实,ES与Mysql等持久化数据库等等,如果从存储本质上来看的话。应该是没有本质上的区别的。我们进行的操作,也只有增删查改四个基本操作。ES也不会对我们的数据,默认的进行十分漂亮的操作,帮助我们完成十分漂亮的操作。 (PS:目前为止,ES帮助最大的操作,其实仅仅只是加上高亮字段,但是这样的操作,我们

ArroGance_X的博客 8935

Elasticsearch实战(十七)---ES搜索如何使用In操作查询及如何Distinct去除重复数据

ES搜索如何使用In操作查询, 如何使用 filter过滤, 多层filter 过滤,如何caidinality去除重复数据

流浪的喵的博客 1万+

如何学习Elasticsearch(ES):从入门到精通的完整指南

通过本文,我们提供了一个系统的学习路径,帮助你从零开始掌握Elasticsearch。无论你是新手还是有一定经验的开发者,都可以根据自己的情况选择合适的学习资源和实践项目,逐步深入理解Elasticsearch的强大功能。

Kenneth55的专栏 2268

MySQL {term}.format(term=terms)解决筛选问题

问题:数据表中某一字段(假设为os)的存值是各个主机的操作系统,现在想在页面中归纳操作系统,并根据归纳后的操作系统类别进行搜索,搜索项有“CentOS”、“Ubuntu”、“RedHat”、“SUSE”、“其他”,“所有”,对应的前端设计传值为“CentOS”、“Ubuntu”、“RedHat”、“SUSE”,“others”,“” 数据库数据内容: mysql> ...

无痕的博客 485

【ES系列】Elasticsearch从入门到精通保姆级教程 | 启篇

🔥 本系列将带你从零开始学习Elasticsearch,通过保姆级教程,手把手教你掌握这个强大的搜索与分析引擎。无论你是完全的新手,还是想系统学习ES的开发者,这个系列都能满足你的需求。

Pte_moon的博客 2291

ElasticSearch学习总结(二):ES介绍与架构说明

本文主要从概念以及架构层面对Elasticsearch做一个简单的介绍,在介绍ES之前,会先对ES的“发动机”Lucene做一个简单的介绍 1. Lucene介绍 为了更深入地理解ElasticSearch的工作原理,特别是索引和查询这两个过程,理解Lucene的工作原理至关重要。本质上,ElasticSearch是用Lucene来实现索引的查询功能的。 1.1 定义 Lucene是一...

不积跬步,无以至千里;不积小流,无以成江海! 1万+

ElasticSearch查询语法

ElasticSearch查询语法

欢迎大家关注 5799

Elasticsearch - SpringBoot 查询 es 相关示例

如果您觉得有用的话,记得给,写作不易啊^ _ ^。而且听说,实在白嫖的话,那欢迎常来啊!!!

杨杨杨~~的博客 1955

ES 18 - Elasticsearch的高级检索语法 (包括term、prefix、wildcard、fuzzy、boost等)

目录 Table of Contents 1 term query - 索引词检索 1.1 term query - 不分词检索 1.2 terms query - in检索 2 prefix query - 前缀检索 3 wildcard query - 通配符检索 4 regexp query - 正则检索 5 fuzzy query - 纠错检索 6 boost评分权重 - 控制文档的优先级别 7 dis_max的用法 - best fields策略 7.1 dis_max的提出

xiangjai的专栏 3612

设计空间探索:乘法器设计的面积、延时、功耗优化

4-2压缩器在减少延迟方面表现出色,适用于需要快速压缩的场景。6-2压缩器在资源占用方面具有优势,能够减少压缩树的层次数量和逻辑门数量。优化功耗:通过合理组合不同类型的压缩器,可以在延迟、资源占用和功耗之间找到最佳平衡点,从而实现优化的设计目标。###参考资料。

SiArch的博客 1873

OpenCV学习笔记(25)基于MFC和OpenCV的摄像机定标与立体匹配测试程序(20140505更新)

最近整理了一下这两年一直在用的摄像机定标与立体匹配测试程序,将代码进行了重构,界面也做了调整,分享出来方便有需要的朋友使用。当然我的编程能力有限,程序可能还有各种bug,请大家多多包涵。相关问题欢迎留言或email联系讨论,谢谢! ==================================================================================源码

晨宇思远 5万+

ES的各种查询

一、准备数据 1.1、数据文档 字段名称 备注 createDate sendDate 发送时间 date longCode 发送长号码 如 16092389287811 Mobile 如 13000000000 corpName 发送公司名称,需要分词检索 smsContent 下发短信内容,需要分词检索 State 短信下发状态 0 成功 1 失败 integer Operatorid 运营商编号1移动2联通3电信 integer Province 省

chbxw 6578

mysql数据库中使用存储过程带来的好处和示例(存储过程的概念、定义、作用等详解)

MySQL的存储过程(Stored Procedure)是一组SQL语句集合。用户通过指定的存储过程名和参数来调用并执行它。存储过程可以在数据库中预编译并存储,这样它们可以被多次调用而无需重新编写或解析SQL语句。 存储过程将复杂的SQL逻辑封装在一个可重用的单元中。多次调用存储过程,而不需要重复编写相同的SQL代码。- 通过封装,可以隐藏复杂的SQL逻辑,只向用户或应用程序提供简单的接口。MySQL的存储过程和编程语言中的函数的原理和目标是一致的:封装可重用的代码逻辑并提高代码的可维护性和可重用性。

weixin_70208651的博客 1717

ES(Elasticsearch)入门学习教程

Elasticsearch 入门学习教程 1.1 为什么要学Elasticsearch? 1.2 如何下载安装使用ES? 1.2.1 ES 安装使用条件 1.2.2 ES 下载须知 1.2.3 ES 官方下载 1.2.3.1 Windows 系统下载安装 1.2.3.1 Mac OSX 系统下载安装 1.2.3.2 Docker方式下载安装 1.2.4 使用Docker 启动ES单节点实例 1.2.5 使用Docker启动ES多节点实例 1.2.6 ES 在生产环境配置 1.2.6.1

m0_67400973的博客 1万+

TLF35584 窗口看门狗_理论篇

1)看门狗的结果(有效或无效触发)由相关的看门狗故障计数器独立监控。2)窗口看门狗的状态是WWO,它可能有“有效WWD触发”或“无效WWD触发”值。

舊梦的博客 2523

Open3D 机载点云电力线提取【2025最新版】

传统方法实现的机载点云电力线分割提取。博客长期更新,本文最新更新时间为:2025年3月23日。

点云侠的博客 4468

ES(Elasticsearch)全文搜索引擎(最全)入门基本语法与在SpringBoot中的实战

一、认识Elasticsearch 1.1、为什么要使用Elasticsearch 虽然在全文搜索领域中,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene的配置及使用非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。 实际项目中,我们建立一个网站或应用程序,并要添加搜索功能,令我们受打击的是:搜索工作是很难的。我们希望我们的搜索解决方案要快,我们

qq_45989156的博客 3万+

CANbus收发器ADM3053BRWZ-REEL7应用原理图设计

ADM3053 在 CAN 协议控制器与物理层总线之间创建一个 完全隔离的接口。该器件具有限流和热关断特性,可防止输出短路。额定温 度范围为工业温度范围,提供 20 引脚、宽体 SOIC 封装。该器件采用 5 V 单电源供电, 提供完全隔离的 CAN 解决方案。ADM3053 是一款隔离式控制器区域网络 (CAN) 物理层收 发器,集成隔离 DC/DC 转换器,符合 ISO 11898 标准。该器件采用 ADI 公司的。Coupler® 技术,将双通道隔离器、 CAN 收发器和 ADI 公司的。

zhusl6688的博客 1235

【ElasticSearch笔记】ES基本查询

Elasticsearch的基本使用,基础概念了解和常用查询语句示例说明。

木子家有小可爱的博客 2994

医疗AI多智能体资源调度:用Python构建高性能MCU资源池

本文介绍了医疗AI服务平台中多智能体资源争用问题的解决方案。作者设计了一个基于MCU(多点控制单元)理念的中央资源调度器,通过三层架构(资源抽象层、调度策略层、执行控制层)实现对GPU、API、数据库等医疗资源的统一管理。系统采用增强版信号量机制处理可计数并发资源,优化令牌桶算法管理速率资源,并支持急诊优先、配额限制、审计合规等医疗场景特殊需求。核心代码提供了带优先级抢占的并发控制和医疗专用令牌桶实现,可有效解决多智能体资源争用导致的优先级混乱、资源利用不均等问题。

AllenLV的博客 3212

ORB-SLAM2算法4之KITTI开源数据集运行ORB-SLAM2生成轨迹并用evo工具评估轨迹

ORB-SLAM2算法1 已成功编译安装ORB-SLAM2到本地,本篇目的是用KITTI开源数据来运行ORB-SLAM2,并生成轨迹,最后用evo评估工具来评估ORB-SLAM2生成的轨迹和真值轨迹。

重点记录机器人和自动驾驶相关领域的技术,尤其是计算机视觉,视觉SLAM等,不仅有前言文献或必备算法的学习,也会有实际应用的点滴经验 2325

【ES专题】ElasticSearch 高级查询语法Query DSL实战

语法结构比较陌生没有中文文档, 只能看英文其他博客也比较少介绍语法结构。比如说,为什么查询中会出现query关键词就跟Mysql有自己的查询语言一样,ES作为一款优秀的分布式文档存储和【搜索引擎】,它也有自己的查询语言。即:Query DSL(查询Domain Specific Language),查询领域专用语言。Query DSL是利用RESTfull风格API传递JSON格式的请求体(RequestBody)数据与ES进行交互,这种方式的丰富查询语法让ES检索变得更强大,更简洁。

qq_32681589的博客 7413

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Elasticsearch:ES|QL 查询展示

这篇文章是继我昨天完成的文章 ​“Elasticsearch:ES|QL 函数及操作符” 的另外一篇文章。我将继续使用之前文章 “” 中的例子来结合 ES|QL 函数来做更进一步的展示。希望能对之前的文章做一个更进一步的展示。在这里,我将主要使用 Dev Tools 来进行展示。:在进行如下的例子之前,你需要至少安装 Elastic Stack 8.11 及以上版本。

Elastic 中国社区官方博客 2598

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

【ElasticSearch8】springboot整合es8(一),实现简单查询

ES8官方api资料不全,es7以后就不支持template的连接方式,自己踩了不少坑,这里参考官方的api做了一个demo,供各位大佬参考,有哪里不对的欢迎各路大神批评指正

qq_24473507的博客 1万+

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

详解最热门搜索引擎——ES

一、产生背景 ​ 互联网发展早期的时候,对于一般的公司储存的数据量不是那么的大,所以很多公司更倾向于使用数据库去存储和查询数据,如:现在去MySQL中查询数据,大概的查询方式就是:select * from table where filed like “%XXX%”或者其他方式,但是,如果我们在查询的时候没有用到或命中数据库建立的索引话,则会扫描整张表,即便是MySQL做过单表查询能力优化,但是他的极限也只在400万左右,且还会经常出现超时现象,让后为了解决这些问题,。很多公司就开始对数据库进

会编程的小郑 1万+

Elasticsearch:ES|QL 查询 TypeScript 类型(二)

​ 在我之前的文章 “Elasticsearch:ES|QL 查询 TypeScript 类型(一)”,我们讲述了如何在 Nodejs 里对 ES|QL 进行查询。在今天的文章中,我们来使用一个完整的例子来进行详细描述。更多有关如何使用 Nodejs 来访问 Elasticsearch的知识,请参阅文章 “Elasticsearch:使用最新的 Nodejs client 8.x 来创建索引并搜索”。

Elastic 中国社区官方博客 1975
上一篇: Elasticsearch的简单学习(一)安装Elasticsearch和kibana
下一篇: 微信小程序之权限验证及其授权
若往夕之
博客等级 码龄9年 20粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值