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

一、介绍

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 //不显示原始数据
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值