【ElasticSearch7.X】学习笔记(一)

news2025/1/11 0:25:34

【ElasticSearch7.X】学习笔记

  • 一、介绍
    • 1.1、ElasticSearch
    • 1.2、RESTful
    • 1.3、数据格式
  • 二、下载安装(单机部署)
    • 2.1、解压文件
    • 2.2、修改配置配置
    • 2.3、创建用户并授权
    • 2.5、启动
  • 三、增删查改
    • 3.1、 索引操作
      • 3.1.1、增加索引
      • 3.1.2、查看索引
        • 3.1.2.1、查看所有索引
        • 3.1.2.2、查看单个索引
      • 3.1.3、删除索引
    • 3.2、 文档操作
      • 3.2.1、创建文档
      • 3.2.2、查看文档
        • 3.2.2.1、查询某一个
        • 3.2.2.2、全查询
      • 3.2.3、修改文档
        • 3.2.3.1、覆盖修改(全量更新)
        • 3.2.3.1、局部修改
      • 3.2.4、删除文档
        • 3.2.4.1、通过唯一性标识删除
        • 3.2.4.2、条件删除文档
      • 3.2.5、复杂语句
        • 3.2.5.1、模糊查询
        • 3.2.5.2、分页查询
        • 3.2.5.3、指定查询数据信息
        • 3.2.5.4、排序
        • 3.2.5.5、多条件查询
        • 3.2.5.6、高亮显示
        • 3.2.5.7、聚合查询

一、介绍

1.1、ElasticSearch

The Elastic Stack, 包括 Elasticsearch、Kibana、Beats 和 Logstash(也称为 ELK Stack)。能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化

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

1.2、RESTful

REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful

简单的理解就是,如果想要访问互联网上的资源,就必须向资源所在的服务器发出请求,请求体中必须包含资源的网络路径,以及对资源进行的操作(增删改查)

1.3、数据格式

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。为了方便大家理解,我们将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比
在这里插入图片描述
Elasticsearch 7.X 中, Type 的概念已经被删除了

二、下载安装(单机部署)

Elasticsearch 的官方地址

本文使用 7.8.0 版本

将下载的文件上传到服务器中

2.1、解压文件

tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz

在解压的文件里新建data、并将新建的data和已有的logs文件夹 赋权777

mkdir elasticsearch/data

2.2、修改配置配置

elasticsearch-7.8.0/config/elasticsearch.yml

# 集群名字
cluster.name: elk
# node名字           
node.name: master
# 日志数据路径          
path.data: /usr/soft/elasticsearch/data
# 日志路径       
path.logs: /usr/soft/elasticsearch/logs
# 是否开始内存交换   
bootstrap.memory_lock: false
# 本机地址
network.host: 0.0.0.0
# 开启端口9200           
http.port: 9200
# 开启跨域访问支持,默认为false
http.cors.enabled: true
cluster.initial_master_nodes: ["master"]

修改/etc/security/limits.conf

# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
# * 代表的是linux 所有用户名称
*                soft    nofile          65536
*                hard    nofile          65536

修改/etc/security/limits.d/20-nproc.conf

# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
# * 代表的是linux 所有用户名称
* soft nofile 65536
* hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096

修改/etc/sysctl.conf

# 在文件中增加下面内容
# 一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536
vm.max_map_count=655360

重新加载

sysctl -p

2.3、创建用户并授权

es不允许root用户启动

useradd elkb
chown -R elkb:elkb /usr/soft/elasticsearch

2.5、启动

#切换成elkb用户
su elkb
#进入bin目录下执行
./elasticsearch
#后台启动
./elasticsearch -d

三、增删查改

3.1、 索引操作

3.1.1、增加索引

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

向 ES 服务器发PUT请求

http://192.168.3.34:9200/shopping

在这里插入图片描述

3.1.2、查看索引

向 ES 服务器发GET请求

3.1.2.1、查看所有索引

http://192.168.3.34:9200/_cat/indices?v

在这里插入图片描述

表头含义
health当前服务器健康状态:green(集群完整) yellow(单点正常、集群不完整) red(单点不正常)
status索引打开、关闭状态
index索引名
uuid索引统一编号
pri主分片数量
rep副本数量
docs.count可用文档数量
docs.deleted文档删除状态(逻辑删除)
store.size主分片和副分片整体占空间大小
pri.store.size主分片占空间大小

3.1.2.2、查看单个索引

http://192.168.3.34:9200/shopping

在这里插入图片描述

{
	"shopping"【索引名】: { 
		"aliases"【别名】: {},
		"mappings"【映射】: {},
		"settings"【设置】: {
		"index"【设置 - 索引】: {
			"creation_date"【设置 - 索引 - 创建时间】: "1614265373911",
			"number_of_shards"【设置 - 索引 - 主分片数量】: "1",
			"number_of_replicas"【设置 - 索引 - 副分片数量】: "1",
			"uuid"【设置 - 索引 - 唯一标识】: "eI5wemRERTumxGCc1bAk2A",
			"version"【设置 - 索引 - 版本】: {
				"created": "7080099"
			},
			"provided_name"【设置 - 索引 - 名称】: "shopping"
			}
		}
	}
}

3.1.3、删除索引

向 ES 服务器发DELETE请求

http://192.168.3.34:9200/shopping

在这里插入图片描述

3.2、 文档操作

这里的文档可以类比为关系型数据库中的表数据,添加的数据格式为 JSON 格式

3.2.1、创建文档

向 ES 服务器发POST请求

# 该请求方式id是ELK自动生成的
http://192.168.3.34:9200/shopping/_doc

# 该请求方式id是自己定义的 同时可以使用put请求方式
http://192.168.3.34:9200/shopping/_doc/001

请求体内容为:

{
	"title":"小米手机",
	"category":"小米",
	"images":"http://www.gulixueyuan.com/xm.jpg",
	"price":3999.00
}

在这里插入图片描述

{
	"_index"【索引】: "shopping",
	"_type"【类型-文档】: "_doc",
	"_id"【唯一标识】: "Xhsa2ncBlvF_7lxyCE9G", #可以类比为 MySQL 中的主键,随机生成
	"_version"【版本】: 1,
	"result"【结果】: "created", #这里的 create 表示创建成功
	"_shards"【分片】: {
		"total"【分片 - 总数】: 2,
		"successful"【分片 - 成功】: 1,
		"failed"【分片 - 失败】: 0
	},
	"_seq_no": 0,
	"_primary_term": 1
}

3.2.2、查看文档

3.2.2.1、查询某一个

向 ES 服务器发GET请求
查看文档时,需要指明文档的唯一性标识,
返回的"_source"是内容体

http://192.168.3.34:9200/shopping/_doc/001

3.2.2.2、全查询

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

3.2.3、修改文档

3.2.3.1、覆盖修改(全量更新)

向 ES 服务器发PUT请求
输入相同的 URL 地址请求,如果请求体变化,会将原有的数据内容覆盖

http://192.168.3.34:9200/shopping/_doc/001

请求体内容为:

{
	"title":"华为手机",
	"category":"华为",
	"images":"http://www.gulixueyuan.com/hw.jpg",
	"price":3999.00
}

在这里插入图片描述

3.2.3.1、局部修改

向 ES 服务器发POST请求

http://192.168.3.34:9200/shopping/_update/001

请求体内容为要修改的内容:

{
    "doc":{
        "title":"苹果手机"
    }
}

3.2.4、删除文档

3.2.4.1、通过唯一性标识删除

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

向 ES 服务器发DELETE请求

http://192.168.3.34:9200/shopping/_update/001

在这里插入图片描述

3.2.4.2、条件删除文档

向 ES 服务器发POST请求

http://192.168.3.34:9200/shopping/_delete_by_query

请求体内容为:

{
 "query":{
	 "match":{
		 	"price":3999.00
		 }
	 }
}
{
	"took"【耗时】: 175,
	"timed_out"【是否超时】: false,
	"total"【总数】: 2,
	"deleted"【删除数量】: 2,
}

3.2.5、复杂语句

3.2.5.1、模糊查询

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

请求体:

{
	"query":{
        "match":{ //match:模糊查询;match_all:全部查询 match_phrase:完全匹配(不会拆词查询)
            "category":"小米"
        } 
    }
}

3.2.5.2、分页查询

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

请求体:

{
	"query":{
        "match":{
            "category":"小米"
        } 
    },
    "from":0, //from:第几个开始 
    "size":2  //size:每页几个
}

3.2.5.3、指定查询数据信息

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

请求体:

{
	"query":{
        "match":{
            "category":"小米"
        } 
    },
    "from":0,
    "size":2,
    "_source":["title"] //要显示的信息
}

3.2.5.4、排序

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

请求体:

{
	"query":{
        "match":{
            "category":"小米"
        } 
    },
    "from":0,
    "size":2,
    "_source":["title"],
    "sort":{ //sort:排序
        "price":{
            "order":"desc" //order:规则
        }
    }
}

3.2.5.5、多条件查询

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search

请求体:

{
	"query":{
        "bool":{ //bool:条件  
            "must":[ //must:条件同时成立 should:条件满足就成立
                {
                    "match":{
                        "category":"小米"
                    }
                },
                {
                    "match":{
                        "price":"3999.00"
                    }
                }
            ],
            "filter":{ //filter:条件过滤
                "range":{ //range:范围
                    "price":{
                        "gt":3000 //gt:大于
                    }
                }
            }            
        }
    }
}

3.2.5.6、高亮显示

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search
{
	"query":{
        "match":{
            "category":"小米"
        } 
    },
    "highlight":{ //highlight:高亮
        "fields":{	//fields:字段
           "category":{} 
        }
    }
}

3.2.5.7、聚合查询

向 ES 服务器发GET请求

http://192.168.3.34:9200/shopping/_search
{
    "aggs":{ //聚合操作
        "price_group":{ //组名称
            "terms":{ // 分组
                "field":"price" //分组字段
            }
        },
        "price_avg":{
            "avg":{ // 平均值
                "field":"price" //分组字段
            }
        }
    },
    "size":0 //不显示原始数据
}

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

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

相关文章

定时任务介绍及X-Job和E-Job简单对比

下面对elastic-Job和xxl-Job做个简单的描述和对比 一、区别 1、XJob环境依赖于mysql,不依赖ZooKeeper, 2、EJob依赖ZooKeeper1、X-Job 侧重的业务实现的简单和管理的方便,学习成本简单, 失败策略和路由策略丰富。推荐使用在“用户…

对elasticsearch的实际应用

有业务需求,要做一个搜索接口,从千万的数据中根据筛选项查到需要的数据 筛选项有 1.学段。高中,初中等 2.学科。数学,语文等 3.专区。同步专区,高考专区等 4.试卷类型。月考卷,期中考试卷等 5.年级。高一&a…

MyBatis-Plus常用注解

常用注解 TableName 在使用MyBatis-Plus实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表 由此得出结论,MyBatis-Plus在确定操作的表时,…

基于 Tensorflow 2.x 从零训练花卉图像识别模型

一、数据集准备 本篇文章使用数千张花卉照片作为数据集,共分为5个分类:雏菊(daisy)、蒲公英(dandelion)、玫瑰(roses)、向日葵(sunflowers)、郁金香&#xf…

ClickHouse中的数据类型

ClickHouse中的数据类型数据类型说明数值类型IntFloatDecimal字符串类型StringFixedStringUUID时间类型DateDateTimeDateTIme64复杂类型ArrayEnumTupleNested特殊类型IPV4GEOBoolean 和 Nullable[参考文章]: ClickHouse | 数据类型介绍 数据类型说明 …

Docker | docker安装portainer详细步骤

portainer是一款容器管理可视化界面,不想在虚拟中使用命令管理容器的小伙伴,可以选择安装portainer对容器进行管理,查看日志、启动、停止容器等非常方便。 1. 搜索portainer镜像 docker search portainer 2. 拉取portainer镜像 docker pull…

[torch]日志记录之SummaryWriter(持更)

参考博文: 《tensorboardX的简单使用》《详解PyTorch项目使用TensorboardX进行训练可视化》《使用TensorBoard检查监控深度学习模型》 一、使用方法 class SummaryWriter(builtins.object)| SummaryWriter(log_dirNone, comment, purge_stepNone, max_queue10, f…

Springboot扩展点之ApplicationContextInitializer

前言 一提到Spring、Springoboot,很多人马上就会想到依赖注入、控制反转、自动装配、约定大于配置、使开发变得简单等等。但是如果仅仅会使用Springboot、SpringMVC完成一些增删改查,解决一些bug,那么实际上你并没有真的懂Spring、Sp…

每天5分钟机器学习:线性判别分析LDA算法

本文重点 我们前面学习了PCA算法,本文我们将学习一种新的算法,这种算法和PCA非常相似,这个算法叫做线性判别分析,简称为LDA,也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。 LDA原理 …

毒鸡汤 | 云服务器部署项目

文章目录前言环境介绍安装PHP安装Apache安装MySQL上传项目访问网站前言 新年的第一篇文章,今年继续努力加油,继续产出高质量的文章。 前面用PHPstudy搭建了【毒鸡汤】项目,但是这样只能自己访问,别人是访问不了的,因此…

Redis 持久化机制

个人博客地址: 文章目录Redis 持久化机制1. 概述2. RDB2.1 手动快照2.2 自动快照3. AOF3.1 AOF机制3.2 AOF文件的重写4. 混合型持久化5. 总结Redis 持久化机制 1. 概述 Redis​为了保证性能,会将所有数据放在内存中,那么万一Redis宕机&…

AcWing 756. 蛇形矩阵

目录问题描述思路与代码1. 个人解法2. 官方题解问题描述 原题链接🔗:756. 蛇形矩阵 输入两个整数 nnn 和 mmm,输出一个 nnn 行 mmm 列的矩阵,将数字 111 到 nmnmnm 按照回字蛇形填充至矩阵中。 具体矩阵形式可参考样例。 输入格…

synchronized底层原理

synchronized是JVM内置锁,基于monitor机制实现,依赖底层操作系统的互斥源语Mutex(互斥量),它是一个重量级锁,性能较低。 当然,JVM内置锁在1.5之后版本做了重大优化,如锁粗化&#xf…

[红明谷CTF 2021]JavaWeb

0x01 好久没打过ctf了,最近也在学Java 就看下java的题吧 WP 进入环境就提示访问 /login ,访问之后 提示的 /json ,试着访问一下 给了 jessid,继续访问 /json 的话 又会跳转至 /login 应该是要传点username password 果然是了&#…

web制作网页

HTML(人的骨架): 标签 1.超文本标记性语言 2.当前最新版HTML5 3.URL统一资源定位器(网址) 4.网站首页名称index.html,default.htm,main.heml 基本结构: 注意:1.标签都是小写 2.标签成对写 3.代码要层次缩进…

JavaScript内存管理

JavaScript 是一个弱类型的、动态语言,在执行一段 JS 代码时,需要经历编译、执行、内存回收阶段。 一、编译阶段 JS 代码执行时,会首先创建全局执行上下文、以及函数执行上下文,上下文的执行顺序按照栈的方式进行调用&#xff0c…

面试题: JVM内存结构

目录目的资源概览JVM内存溢出分类类型1: OutOfMemoryError类型2: StackOverflowError方法区与永久代、元空间之间的关系目的 学习记录, 面试准备 资源 B站的一个讲高频面试题的一个学习视频 概览 线程私有 ① 程序计数器 ② 虚拟机栈线程共享 ① 堆 ② 方法区 JVM内存溢…

RSA密钥协商过程

目录 TSL握手过程 RSA密钥协商握手过程 TLS第一次握手 TLS第二次握手 客户端验证证书 TLS第三次握手 TLS 第四次握手 RSA 算法的缺陷 TSL握手过程 HTTP 由于是明文传输,所谓的明文,就是说客户端与服务端通信的信息都是肉眼可见的,随…

linux常用指令讲解

文章目录 前言一、指令详解总结前言 Linux是一种自由和开放源代码的类UNIX操作系统,该操作系统的内核由林纳斯托瓦兹在1991年首次发布,之后,在加上用户空间的应用程序之后,就成为了Linux操作系统。严格来讲,Linux只是操…

分布式锁的实现

目录分布式锁分布式锁的引出单体锁存在的问题分布式锁的引出分布式锁的设计思路分布式锁的常见应用场景分布式锁方案分布式锁 分布式锁的引出 单体锁存在的问题 在单体应用中,如果我们对共享数据不进行加锁操作,多线程操作共享数据时会出现数据一致性问…