五、elasticsearch查询操作

news2024/11/25 18:54:58

      

目录

数据准备

1、查询指定字段包含指定内容的文档

2、指定输出的文档字段查询(“_source”)

3、排序查询(默认根据指定字段升序asc排序)(“sort”)

4、分页查询

5、布尔查询(多条件查询)

6、数据过滤(“filter”)

7、精确查询(term)

8、两个类型text和keyword

9、高亮查询(“highlight”)

10、自定义高亮标签


        elasticsearch查询操作大致可分为以下几种(这些操作MySQL也可以做,但是在大数据量的情况下有可能会出现效率较慢的情况)而elasticsearch可以说是解决这种问题的灵丹妙药,为查询而生,特别是大数据量的模糊查询

匹配查询  match

按照条件查询 (must、must_not、should)

精确查询 (term)

区间范围查询(filer ->range)

匹配字段查询

多条件查询(布尔查询)

高亮查询 (highlight)

数据准备

使用kibana执行操作,将数据保存在elasticsearch中

PUT /book/_doc/1
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法",
  "price":15
}
PUT /book/_doc/2
{
  "name":"Java",
  "desc":"这是一本java基础学习",
  "price":40
}
PUT /book/_doc/3
{
  "name":"Linux",
  "desc":"服务器命令操作",
  "price":35
}
PUT /book/_doc/4
{
  "name":"c语言",
  "desc":"入门教程",
"price":20
}

查看索引详细信息,es帮着我们自动推断并设置了字段类型

 

        在使用kabina时,输入关键字kibina会有提示,点击enter即可帮助我们自动补全API命令,但是注意如果输入了”_doc”则没有了提示

1、查询指定字段包含指定内容的文档

查询文档中name包含数据的文档记录

第一种方式GET  book/_doc/_search?q=name:数据

第二种方式
GET  book/_doc/_search
{
  "query": {
    "match":{
        "name": "数据"
    }
  }
}

2、指定输出的文档字段查询(“_source”)

查询文档中name包含数据的文档记录,并只要查出文档记录的name和desc

GET  book/_doc/_search
{
  "query": {
    "match":{
        "name": "数据"
    }
  },
  "_source":["name","desc"]
}

3、排序查询(默认根据指定字段升序asc排序)(“sort”)

查询desc包含学习的文档并根据价格排序

GET  book/_doc/_search
{
  "query": {
    "match":{
        "desc": "学习"
    }
  },
  "sort": [
    {
      "price": {
        "order":"desc"
      }
    }
  ]
}

 4、分页查询

查询desc包含学习的文档,只要第一页的第一条

GET  book/_doc/_search
{
  "query": {
    "match":{
        "desc": "学习"
    }
  },
  "sort": [
    {
      "price": {
        "order":"desc"
      }
    }
  ],
  "from": 0,
  "size":1
}

 数据下标还是从0开始的

5、布尔查询(多条件查询)

查询文档中desc包含学习且name包含数据的记录

must(and),所有条件都要match到才可以查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

 相当于select * from book where desc=”学习” and name=”数据”;

should(or),只要match到其中一个条件即可查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "should": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

 must_not(or),只要match到其中一个条件,文档记录都不会查询出来

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must_not": [
          {
             "match": {
               "desc": "学习"
              }
          },
           {
             "match": {
               "name": "数据"
              }
          }
      ]
    }
  }
}

 

6、数据过滤(“filter”)

查询出desc不包含学习,name不包含数据的,价格大于等于18且小于30([18,30))的文档记录

GET  book/_doc/_search
{
  "query": {
    "bool":{
        "must_not": [
          {
             "match": {
               "desc": "学习"
              }
          },
          {
            "match": {
              "name": "数据"
              }
          }
      ],
      "filter": {
        "range": {
          "price":{
            "gte": 18,
             "lt": 30
          }
        }
      }
    }
  }
}

gte(greater than equal)大于等于
gt(greater than )大于
lte(less than equal)小于等于  
 lt(less than )小于

7、精确查询(term)

term查询是直接根据倒排索引指定的词条进行精确查询

match会使用分词器解析,先分析文档,然后再通过分析的文档进行模糊查询

效率:term>match

term不会对查询条件进行分词

keyword不会对存储的数据进行分词

GET book/_doc/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "term": {
            "price": {
              "value": 20
            }
          }
        },
        {
           "term": {
            "price": {
              "value": 15
            }
          }
        }
      ]
    }
  }
}

8、两个类型text和keyword

text:内容会被分词器解析

keyword: 内容不会被分词器解析,整体作为一个关键词

使用keyword作为analyzer,执行结果

 

text内容整体作为一个关键词解析出来,不会被分词器拆开

使用standard作为analyzer

 则会使用分词器将每个文字作为一个词解析出来

创建索引测试两个类型的区别

PUT testdb
{
  "mappings": {
    "properties": {
      "name":{
       "type" :"text"
      },
      "desc":{
        "type": "keyword"
      }
    }
  }
}

 

 同样把数据录入到elasticsearch中

PUT /testdb/_doc/1
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法",
  "price":15
}
PUT /testdb/_doc/2
{
  "name":"数据结构",
  "desc":"基础学习数据结构与算法2",
  "price":15
}

 

 

 

9、高亮查询(“highlight”)

GET  book/_search
{
  "query": {
    "match": {
      "name": "数据"
    }
  },
  "highlight": {
    "fields": {
      "name": {}
    }
  }
}

 默认把搜索条件匹配到的每个字加上<em>标签

10、自定义高亮标签

"pre_tags":定义标签前缀
"post_tags": 定义标签后缀

例如

GET  book/_search
{
  "query": {
    "match": {
      "name": "数据"
    }
  },
  "highlight": {
    "pre_tags": "<p class='key' style='color:red'>",
    "post_tags": "</p>", 
    "fields": {
      "name": {}
    }
  }
}

 

 

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

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

相关文章

中国人民大学与加拿大女王大学金融硕士——在职读研撑起未来的帆

威廉姆曾说&#xff1a;“人生就是一次航行&#xff0c;航行中必然会遇到从各方面袭来的劲风。然而每一阵风都会加快你的航速&#xff0c;只要你稳住航舵&#xff0c;即使暴风雨也不会使你偏离航向”。在浩瀚的大海中&#xff0c;每个人都是一只独立的小船&#xff0c;掌舵的人…

前四周我安卓的傻逼问题

1&#xff09;这三个文档在在什么时候会使用到&#xff0c;以及主要是涉及到了哪一块的知识 2&#xff09;.ProjectConfig宏的配置 &#xff0c;这个在linux里面有什么用 3&#xff09;代码远程地址等等&#xff0c;这些是公司仓库&#xff0c;还是公共仓库&#xff0c;为啥有…

品牌新闻稿怎么写得有高度和深度?纯干货

品牌新闻稿是公司或品牌向公众发布的一种公关宣传工具&#xff0c;需要在选题、素材搜集整理、观点和见解、大纲搭建等方面做好准备&#xff0c;以写出高度和深度兼备的品牌新闻稿&#xff0c;接下来伯乐网络传媒就来给大家分享一下。 一、品牌新闻稿选题 品牌新闻稿的选题应该…

vue-devtools浏览器调试工具离线安装教程

vue-devtools浏览器调试工具离线安装教程 vue-devtools浏览器调试工具离线安装是下载源码&#xff0c;通过本地编译之后&#xff0c;在放到浏览器上 这里写目录标题 vue-devtools浏览器调试工具离线安装教程1.下载源码2.执行安装插件包命令3.安装插件 1.下载源码 [不推荐]在gi…

SAP从入门到放弃之BOM配置-Part2

感谢大佬的文章&#xff0c;最近在测试BOM行项目类别为R类别的功能&#xff0c;看到了这篇文章。最近忙只能机翻一下。建议大家点开原文地址看。 https://blogs.sap.com/2013/09/11/bom-configuration-bom-modification-parameters/ 介绍&#xff1a; 对于任何模块&#xff0…

Doo Prime 德璞资本:你不能不知道的贵金属期货交易平台选取方法!

近些年来&#xff0c;在贵金属期货交易市场中&#xff0c;投资者越来越多。随着贵金属价格的波动&#xff0c;期货交易成为了一种非常有吸引力的投资方式。然而做期货交易&#xff0c;怎么选一家好的贵金属期货交易平台&#xff0c;成为了许多期货投资者非常关心的问题。 首先&…

高压放大器在介电材料测试中的应用

介电材料测试是一项重要的材料性能测试&#xff0c;它涉及到物理学、化学、材料科学等多个学科领域。高压放大器是介电材料测试中的一种重要设备&#xff0c;它可以放大微弱的电信号&#xff0c;提高测试的准确性和精度。下面将详细介绍高压放大器在介电材料测试中的应用。 图&…

Axure教程—省市区三级联动(中继器)

本文将教大家如何用AXURE中中继器制作省市区三级联动 一、效果 预览地址&#xff1a;https://t6gmmh.axshare.com 二、功能 选择省份、出现相应的市区&#xff0c;选择市区出现相应的区或县 省市区三级联动效果 三、制作 1、省 拖入一个矩形&#xff0c;命名为省&#xff0c…

移动通信基站中光模块的应用解析

生活中你有看到光模块在工作吗&#xff1f;回答是肯定的。光模块的应用小到一个监控设备&#xff0c;大到数据中心、云计算、移动通信基站、超级计算机等领域&#xff0c;与我们的生活息息相关、密不可分。本期文章易天光通信&#xff08;ETU-LINK&#xff09;将带您来了解一下…

带宽与吞吐量以及吞吐量对网络有什么影响

什么是网络吞吐量 在优化和排除网络性能故障时&#xff0c;测量吞吐量是评估网络连接不良或滞后原因的主要方法之一。简单来说&#xff0c;吞吐量是指通过网络成功传输的数据量。它是在一段时间内从源到目标的数据传输速率。 当网络用户访问应用程序或共享文件时&#xff0c;…

2023-06-19:讲一讲Redis分布式锁的实现?

2023-06-19&#xff1a;讲一讲Redis分布式锁的实现&#xff1f; 答案2023-06-19&#xff1a; Redis分布式锁最简单的实现 要实现分布式锁&#xff0c;确实需要使用具备互斥性的Redis操作。其中一种常用的方式是使用SETNX命令&#xff0c;该命令表示"SET if Not Exists&…

ChatGLM-6B 在 ModelWhale和本地 平台的部署与微调教程

ChatGLM-6B 在 ModelWhale 平台的部署与微调教程 工作台 - Heywhale.com ChatGLM-6B 介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型&#xff0c;基于 General Language Model (GLM) 架构&#xff0c;具有 62 亿参数。结合模型量化技术&#xff0c;用户可以在消费…

古希腊历史的五个阶段

古希腊&#xff08;Greece&#xff09;&#xff0c;是西方文明的源头之一&#xff0c;是古代巴尔干半岛南部、爱琴海诸岛和小亚细亚沿岸的总称。古希腊是西方文明最重要和直接的渊源。 西方有记载的文学、科技、艺术都是从古代希腊开始的。古希腊不是一个国家的概念&#xff0c…

4.Mysql备份与恢复

文章目录 Mysql备份与恢复重要性数据库备份的分类从物理与逻辑的角度从数据库的备份策略角度 常见的备份方法MySQL 完全备份优点与缺点数据库完全备份分类Mysql物理冷备份与恢复mysqldump备份数据库恢复数据库 mysql日志管理错误日志通用查询日志二进制日志慢查询日志查看日志文…

GAMES101 笔记 Lecture 04 Transformation Cont.

目录 3D Transformations(三维变换)Viewing transformation(观测变换)View/Camera Transformation(视图变换)What is view transformation(什么是视图变换)&#xff1f;How to perform view transformation?(如何进行视图变换呢&#xff1f;) Projection Transformation(投影变…

古希腊简史

古希腊&#xff08;Ancient Greece&#xff09;狭义上指希腊地区从公元前12世纪迈锡尼文明毁灭至公元前146年希腊地区被罗马共和国征服为止。广义上指爱琴诸文明在罗马人征服前的全部历史。 克里特岛文明&#xff1a;早在约公元前3650年&#xff0c;爱琴海地区就孕育了灿烂的米…

理解Web3公链共识算法的原理与机制

Web3时代带来了去中心化、透明和安全的数字经济发展&#xff0c;而公链的共识算法是实现这一目标的关键。共识算法确保了公链网络中的节点对交易和状态的一致性达成共识&#xff0c;同时防止了恶意行为和双重支付等问题。本文将深入探讨Web3公链共识算法的核心原理与机制。 1.共…

《C++ Primer》--学习4

函数 函数基础 局部静态对象 局部静态对象 在程序的执行路径第一次经过对象定义语句时初始化&#xff0c;并且直到程序终止才被销毁&#xff0c;在此期间即使对象所在函数结束执行也不会对它有影响 指针或引用形参与 const main&#xff1a; 处理命令行选项 列表初始化返回…

无源供电无线测温系统的研究应用

摘要&#xff1a;无源供电无线测温在线监测系统是一种基于声表面波技术的测温技术&#xff0c;在变电站监测方面得到了很好的技术实践应用。本文对无源供电无线测温在线监测系统研究应用进行分析研究。 关键词&#xff1a;设备检测&#xff1b;无线测温。 引言 在电力系统设…

【Java-SpringBoot+Vue+MySql】Day1-环境搭建项目创建

目录 一、搭建环境 1、数据库 2、数据库可视化 3、JAVA-JDK 4、项目管理器 &#xff08;1&#xff09;修改仓库路径 &#xff08;2&#xff09;修改镜像 5、编译器 二、创建项目 1、新建项目 2、修改下载源 三、使用LomBok依赖 四、有则改之 1、发现问题 2、解决问…