ElasticSearch入门教程

news2025/2/25 3:33:49

文章目录

  • 一、Elasticsearch 概述
    • 1.1、ElasticSearch是什么?
    • 1.2、ElasticSearch的安装
  • 二、ElasticSearch的使用
    • 2.1、索引操作
    • 2.2、文档操作
    • 2.3、映射操作
    • 2.4、高级查询操作

一、Elasticsearch 概述

1.1、ElasticSearch是什么?

官网解释如图所示:
在这里插入图片描述
The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源的任何格式的数据,然后对数据进行搜索、分析和可视化。

Elaticsearch,简称为 ES,ES 是一个开源的高扩展的分布式全文搜索引擎,是整个 Elastic Stack 技术栈的核心。它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理 PB 级别的数据。

1.2、ElasticSearch的安装

Windows 版的 Elasticsearch ,官网下载地址点击下载、解压,解压后的 Elasticsearch 的目录结构如下:

在这里插入图片描述
进入 bin 目录,点击 elasticsearch.bat 启动 ES 服务;浏览器输入:http://localhost:9200,如图所示,开启成功。本次下载是7.8.0版本。

在这里插入图片描述

二、ElasticSearch的使用

2.1、索引操作

索引的概念:

一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以定义任意多的索引。

  1. 创建索引,对比关系型数据库,创建索引就等同于创建数据库

    在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/test_a

在这里插入图片描述
2)查看所有索引

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/_cat/indices?v

请求路径中的_cat 表示查看的意思,indices 表示索引,v显示列的属性名
在这里插入图片描述

  1. 查看单个索引
    在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a
    在这里插入图片描述

  2. 删除索引
    在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/test_a
    在这里插入图片描述

2.2、文档操作


一个文档是一个可被索引的基础信息单元,也就是一条数据。

  1. 新建文档

索引已经创建,接下来创建文档,并添加数据。这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON格 式。

在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/test_a/_doc/102

其中:1表示是自定义唯一性标识,需要在创建时指定;如果没有指定数据唯一性标识(ID),默认情况下,ES 服务器会随机
生成一个。

在这里插入图片描述
此处发送请求的方式必须为 POST,不能是 PUT,否则会发生错误;

  1. 查看文档

查看文档时,需要指明文档的唯一性标识,类似于 MySQL 中数据的主键查询

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a/_doc/101

在这里插入图片描述

  1. 修改文档

和新增文档一样,输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖.

在 Postman 中,向 ES 服务器发 POST 请求 :http://127.0.0.1:9200/test_a/_doc/101

在这里插入图片描述

  1. 删除文档

删除一个文档不会立即从磁盘上移除,它只是被标记成已删除(逻辑删除)。

在 Postman 中,向 ES 服务器发 DELETE 请求 :http://127.0.0.1:9200/test_a/_doc/104

在这里插入图片描述

2.3、映射操作

mapping 是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等。

  1. 创建映射

在 Postman 中,向 ES 服务器发 PUT 请求 :http://127.0.0.1:9200/student/_mapping

在这里插入图片描述
2) 查看映射

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_b/_mapping

在这里插入图片描述

2.4、高级查询操作

  1. 查询所有文档

请求参数: “query”:这里的 query 代表一个查询对象,里面可以有不同的查询属性。
“match_all”:查询类型,例如:match_all(代表查询所有), match,term , range 等等 {查询条件}:查询条件会根据类型的不同,写法不同。

在 Postman 中,向 ES 服务器发 GET 请求 :http://127.0.0.1:9200/test_a/_search

在这里插入图片描述

  1. 匹配查询

match 匹配类型查询,会把查询条件进行分词,然后进行查询,多个词条之间是 or 的关系

在这里插入图片描述

  1. 字段匹配查询

multi_match 与 match 类似,不同的是它可以在多个字段中查询。

在这里插入图片描述

  1. 关键字精确查询

term 查询,精确的关键词匹配查询,不对查询条件进行分词。

在这里插入图片描述

  1. 多关键字精确查询
    terms 查询和 term 查询一样,但它允许你指定多值进行匹配。
    如果这个字段包含了指定值中的任何一个值,那么这个文档满足条件,类似于 mysql 的 in
    在这里插入图片描述注意:

精确匹配 term或者terms,如果要使用中文查询,是查不出来的,要改成***.keyword 如果是数字,可以不用加.keyword

  1. 指定查询字段

默认情况下,Elasticsearch 在搜索的结果中,会把文档中保存在_source 的所有字段都返回。如果我们只想获取其中的部分字段,我们可以添加_source 进行过滤。

在这里插入图片描述

我们也可以通过:
includes:来指定想要显示的字段
excludes:来指定不想要显示的字段

在这里插入图片描述

  1. 组合查询
    bool把各种查询通过must(必须 )、must_not(必须不)、should(应该)的方式进行组合
# must 选项看似杂乱,目的是理解ES的搜索原理。
{
    "query": {
        "bool": {
            "must": [
                {
                    "match": {
                        "title": "米耳机123"
                    }
                }
            ],
            "must_not": [
                {
                    "match": {
                        "price": 168
                    }
                }
            ],
            "should": [
                {
                    "match": {
                        "images": "http://www.xiaomi.com/xm2.png"
                    }
                }
            ]
        }
    }
}

在这里插入图片描述

  1. 范围查询

range 查询找出那些落在指定区间内的数字或者时间。range 查询允许以下字符

操作符说明
gt大于
gte大于等于
lt小于
lte小于等于

在这里插入图片描述

  1. 模糊查询

返回包含与搜索字词相似的字词的文档。

fuzzy 查询会在指定的编辑距离内创建一组搜索词的所有可能的变体或扩展。然后查询返回每个扩展的完全匹配。通过 fuzziness 修改编辑距离。一般使用默认值 AUTO,根据术语的长度生成编辑距离。

{
    "query": {
        "fuzzy": {
            "title": {
                "value": "make",
                "fuzziness":2
            }
        }
    }
}

在这里插入图片描述

  1. 多字段排序

sort 可以让我们按照不同的字段进行排序,并且通过 order 指定排序的方式。desc 降序,asc升序。

{
    "query": {
        "match_all": {}
    },
    "sort": [
        {
            "price": {
                "order": "desc"
            }
        },
        {
            "title.keyword": {
                "order": "desc"
            }
        }
    ]
}

在这里插入图片描述

  1. 高亮查询

在进行关键字搜索时,搜索出的内容中的关键字会显示不同的颜色,称之为高亮。

{
    "query": {
        "match": {
            "title": "米34"
        }
    },
    "highlight": {
        "pre_tags": "<font color='green'>",
        "post_tags": "</font>",
        "fields": {
            "title": {}
        }
    }
}

在这里插入图片描述
14) 分页查询

from:当前页的起始索引,默认从 0 开始。 from = (pageNum - 1) * size
size:每页显示多少条

{
    "query": {
        "match_all": {}
    },
    "sort": [
        {
            "price": {
                "order": "asc"
            }
        }
    ],
    "from": 0,
    "size": 3
}

在这里插入图片描述
15) 聚合查询

聚合是对 es 文档进行统计分析,类似与关系型数据库中的 group by,比如取最大值、平均值等等。

  1. 找出最贵的手机价格
{
    "aggs": {
        "max_price": {
            "max": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述
2.对所有的手机价格求和

{
    "aggs": {
        "sum_price": {
            "sum": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述
3.stats 聚合,对某个字段一次性返回 count,max,min,avg 和 sum 五个指标

在这里插入图片描述
4.桶聚合查询,terms 聚合,分组统计

{
    "aggs": {
        "age_groupby": {
            "terms": {
                "field": "price"
            }
        }
    },
    "size": 0
}

在这里插入图片描述

其他聚合 :

对某个字段取平均值:avg

对某个字段的值进行去重之后再取总数:cardinality

以上是ES的安装和入门操作,重点理解和掌握索引、文档以及高级查询的操作。

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

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

相关文章

Rdkit|操作分子对象

github&#xff1a;地址 文章目录 RDKit|操作分子对象引入所需库获取分子中的原子获取原子的坐标信息访问单个原子的信息访问所有原子分子中的键操作获取键的信息 获取分子中所有的环 RDKit|操作分子对象 引入所需库 from rdkit import Chem from rdkit.Chem import Draw获取…

Mysql基本语法+Navicat使用

进入数据库&#xff1a;mysql -uroot -p 修改数据库密码&#xff1a;ALTER USER rootlocalhost IDENTIFIED BY 这里输入密码; &#xff08;如&#xff1a;ALTER USER rootlocalhost IDENTIFIED BY 111111;&#xff09; 创建数据库&#xff1a;create database 数据库名; 查…

刷题记录01

题目一. 这道题要先解释一下什么是非递增,非递增就是a[i] >a[i1],递增则是相反. 非递减就是a[i]>a[i1],递减就是相反 大方向思路是: 遍历数组判断相邻元素的顺序关系统计排序子序列数量 具体思路: 本题依次比较整个数组a[i1]>a[i] &#xff0c;则进入非递增序列判…

在vue中点击弹框给弹框中的表格绑值

场景描述&#xff1a;如下图所示&#xff0c;我们需要点击 ‘账单生成’ 按钮&#xff0c;然后里边要展示一个下图这样的表格。 最主要的是如何展示表格中的内容&#xff0c;一起看看吧&#xff01; <template><!-- 水费 欠费--><el-dialog title"水费欠费…

静态图片转3D动态GIF/视频

Leiapix是一项令人印象深刻的技术&#xff0c;它可以让静态的图片动起来&#xff0c;为观众提供沉浸式和交互式的图像体验。这项创新的技术使用了Leia Inc.的自适应光栅屏幕技术&#xff0c;通过利用人眼的视差和立体视觉效应&#xff0c;将图像中的元素以动态的方式呈现出来&a…

《第一次线下面试总结》

《第一次线下面试总结》 面试时间&#xff1a;2023/7/11 上午10点 面试总时长20分钟。 实习薪资&#xff1a;2.3k…后期看表现&#xff0c;可根据实际情况那啥 。估计是看锤子… 一、HR面 自我介绍你哪里的、目前住哪里等基本信息。你偏向前端还是后端&#xff1f;说说你的项目…

电路分析基础学习(上)第7章

李瀚荪版电分第二版 目录 二阶电路的定义 电路中的等幅振荡与阻尼振荡 RLC电路的零输入响应 ----------------------------------------------------------------------------------------------------------------------------- 二阶电路的定义 二阶电路是指由电容、电感…

[QT编程系列-3]:C++图形用户界面编程,QT框架快速入门培训 - 2- QT程序的运行框架:HelloWorld、常见控件、对象树原理

目录 2. QT程序的运行框架 2.1 Hello World程序框架 2.2 QT Designer初识 2.3 用QT Designer设计用户登录界 2. QT程序的运行框架 2.1 Hello World程序框架 上述示例代码中&#xff0c;首先根据应用程序的需求使用 QCoreApplication 或 QApplication 定义 app 对象。如果你…

[综述] Generative AI meets 3D: A Survey on Text-to-3D in AIGC Era

论文&#xff5c; 改文章是23年5月27日挂在arxiv上&#xff0c;本文重点关注4.1节Text Guided 3D Avatar Generation、4.4节Text Guided 3D Shape Transformation和第5章Discussion Text Guided 3D Avatar Generation DreamAvatar DreamAvatar: Text-and-Shape Guided 3D Hu…

k8s中网络通讯简单介绍

1 前言 Kubernetes的网络模型假定了所有的pod都在一个可以直接连通的扁平的网络空间中&#xff0c;这在GCE&#xff08;Google Compute Engine&#xff09;里面是现成的网络模型&#xff0c;Kubernetes假设这定这个网络已经存在。但是在私有云里搭建Kubernetes集群&#xff0c;…

CHI read trans flow

Read transactions with DMT and without snoops 对于不产生snoop的read trans&#xff0c;建议使用DMT功能&#xff0c;如下图所示&#xff1a; 注意点&#xff1a; a. SNF并不需要给HNF回响应&#xff0c;因为RN发送的compack可以释放HNF处记录的请求; Read transaction wi…

《Redis 核心技术与实战》课程学习笔记(七)

切片集群&#xff1a;数据增多了&#xff0c;是该加内存还是加实例&#xff1f; 切片集群&#xff0c;也叫分片集群&#xff0c;就是指启动多个 Redis 实例组成一个集群&#xff0c;然后按照一定的规则&#xff0c;把收到的数据划分成多份&#xff0c;每一份用一个实例来保存。…

使用Dcoker Registry搭建私有镜像仓库

Dcoker Registry 和Harbor有什么相似和区别&#xff1f;各自有什么优劣&#xff0c;请详细介绍 Docker Registry和Harbor都是容器镜像仓库管理系统&#xff0c;用于存储、管理和分发Docker镜像。它们有一些相似之处&#xff0c;但也存在一些区别。下面是对它们的相似之处和区别…

idea导入springboot项目,下载的pom.xml文件是html格式。

一、可以看到我的pom.xml的parent标签 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0…

使用cuda报错的一次记录(CUDA error: out of memory)

原因&#xff1a; 由于batch_size设置过大导致的&#xff01;&#xff01;&#xff01;

机器学习技术(四)——特征工程与模型评估

机器学习技术&#xff08;四&#xff09;——特征工程与模型评估(1️⃣) 文章目录 机器学习技术&#xff08;四&#xff09;——特征工程与模型评估(:one:)一、特征工程1、标准化2、特征缩放3、缩放有离群值的数据4、非线性转换5、样本归一化6、特征二值化7、标称特征编码(one-…

亚马逊云科技推出的一项完全托管的生成式AI服务——Amazon Bedrock

在全球生成式AI浪潮兴起之际&#xff0c;以“智联世界&#xff0c;生成未来”为主题的2023世界人工智能大会&#xff08;WAIC 2023&#xff09;于7月6日在上海世博中心拉开帷幕。大会首日&#xff0c;亚马逊云科技携生成式AI产品Amazon Bedrock亮相大会现场&#xff0c;亚马逊云…

C语言 指针进阶(二)

目录 一.函数指针 1.1函数指针的认识 1.2函数指针的使用 二、函数指针数组 1.1函数指针的认识 1.2 函数指针数组实现计算器 三、指向函数指针数组的指针 四、回调函数 通过使用qsort函数加强对回调函数的理解 qsort排序整形 qosrt排序结构体 用冒泡排序的思想&…

Java设计模式之结构型-组合模式(UML类图+案例分析)

目录 一、基础概念 二、UML类图 三、角色分析 四、案例分析 1、基本实现 2、菜单遍历 五、总结 一、基础概念 组合模式&#xff08;Composite Pattern&#xff09;又叫部分-整体模式&#xff0c;它通过将对象组合成树形结构来表示“整体-部分”的层次关系&#xff0c…

《网络安全标准实践指南》(72页)

导读 摘要&#xff1a;为指导网络数据安全风险评估工作&#xff0c;发现数据安全隐患&#xff0c;防范数据安全风险&#xff0c;依据《中华人民共和国网络安全法》《中华人民共和国数据安全法》《中华人民共和国个人信息保护法》等法律法规&#xff0c;参照数据安全相关国家标…