【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础
创始人
2025-06-01 15:22:44

目录

一、ES 基本概念介绍

1.1 ES 是什么

1.2 ES 主要功能

1.3 ES 相关术语

1.3.1 文档 Document

1.3.2 索引 Index

1.3.3 字段 Filed

1.3.4 ES 术语总结 

二、ES 操作方式

2.1 Curl 命令操作 ES 

2.1.1 安装 ElasticSearch

2.1.2 访问 ES

2.1.3 通过 curl 命令来完成索引的创建 

2.2 Kibana 操作 ES 

2.2.1 安装 Kibana

2.2.2 访问 kibana

2.2.3 使用 DEV Tools 操作 ES

三、ES 索引 API 

3.1 创建索引

3.2 删除索引

四、ES 文档 API 

4.1 创建文档

4.2 查询文档

4.3 批量创建文档

4.4 批量查询文档


 

一、ES 基本概念介绍

1.1 ES 是什么

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。

1.2 ES 主要功能

数据存储、数据搜索、数据分析。

1.3 ES 相关术语

1.3.1 文档 Document

        Document 文档就是用户存在 es 中的一些数据,它是 es 中存储的最小单元。(类似于表中的一行数据。)注意:每个文档都有一个唯一的 ID 表示,可以自行指定,如果不指定 es 会自动生成。

1.3.2 索引 Index

索引其实是一堆文档 Document 的集合。(它类似数据库的中的一个表) 

doc_index:

1.3.3 字段 Filed

        在 ES 中,Document 就是一个 Json Object,一个 Json Object 其实是由多个字段组成的,每个字段它有不同的数据类型。 

doc_index:

  • 字符串:text、keyword

  • 数值型:long、integer、short、byte、double、float

  • 布尔:boolean

  • 日期:date

  • 二进制:binary

  • 范围类型:integer_range、float_range、long_range、double_range、date_range 

1.3.4 ES 术语总结 

ES 索引、文档、字段关系小结:

        一个索引里面存储了很多的 Document 文档,一个文档就是一个 json object,一个 json object 是由多个不同或相同的 filed 字段组成。

二、ES 操作方式

        ES 的操作和我们传统的数据库操作不太一样,它是通过 RestfulAPI 方式进行操作的,其实本质上就是通过 http 的方式去变更我们的资源状态。

  1. 通过 URI 指定要操作的资源,比如 Index、Document;

  2. 通过 Http Method 指定要操作的方法,如 GET、POST、PUT、DELETE。

常见操作 ES 的两种方式: Curl、Kibana DevTools。

2.1 Curl 命令操作 ES 

2.1.1 安装 ElasticSearch

Elasticsearch 7.8.1 下载地址:Elasticsearch 7.8.1 | Elastic

[root@elk101 ~]# ls
anaconda-ks.cfg  elasticsearch-7.8.1-x86_64.rpm
[root@elk101 ~]# rpm -ivh elasticsearch-7.8.1-x86_64.rpm# 内存调优。如果你虚机内存低于 1g 则可以进行相应的修改,否则这步可以省略
[root@elk101 ~]# vim /etc/elasticsearch/jvm.options
-Xms512g
-Xmx512g[root@elk101 ~]# systemctl enable --now elasticsearch.service 

ElasticSearch 服务默认会监听两个端口,一个是 9200(用于外部访问),一个是 9300(用于集群内部访问)。

2.1.2 访问 ES

[root@elk101 ~]# curl http://127.0.0.1:9200
{"name" : "elk101","cluster_name" : "elasticsearch","cluster_uuid" : "zx-ZKopVQyqH8zVu8IZvpw","version" : {"number" : "7.8.1","build_flavor" : "default","build_type" : "rpm","build_hash" : "b5ca9c58fb664ca8bf9e4057fc229b3396bf3a89","build_date" : "2020-07-21T16:40:44.668009Z","build_snapshot" : false,"lucene_version" : "8.5.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0-beta1"},"tagline" : "You Know, for Search"
}

2.1.3 通过 curl 命令来完成索引的创建 

curl -XPUT 'http://127.0.0.1:9200/doc_index/_doc/1' \
-H "Content-Type: application/json" \
-d '{
"name":"sky",
"age":18,
"salary": 1000000
}'# 获取数据
[root@elk101 ~]# curl -XGET 'http://127.0.0.1:9200/doc_index/_doc/1'
{"_index":"doc_index","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{
"name":"sky",
"age":18,
"salary": 1000000

2.2 Kibana 操作 ES 

2.2.1 安装 Kibana

Kibana 7.8.1 下载地址:Kibana 7.8.1 | Elastic

[root@elk101 ~]# rpm -ivh kibana-7.8.1-x86_64.rpm # 配置 kibana
[root@elk101 ~]# vim /etc/kibana/kibana.yml 
# kibana 默认监听端口
server.port: 5601
# kibana 监听地址段
server.host: "0.0.0.0"
# kibana 内部域名
server.name: "elk.kibana"
# kibana 从 es 节点获取数据
elasticsearch.hosts: ["http://localhost:9200"]
# kibana 汉化
i18n.locale: "zh-CN"[root@elk101 ~]# systemctl enable --now kibana.service 

2.2.2 访问 kibana

在浏览器访问(kibana ip):http://192.168.170.130:5601/

点击左侧导航栏的堆栈监测:

点击使用内部收集设置:

可以查看到监控信息:

2.2.3 使用 DEV Tools 操作 ES

# 在控制台输入
GET /doc_index/_search

三、ES 索引 API 

es 有专门的 Index API,用于创建、更新、删除索引配置等。

3.1 创建索引

创建索引 api 如下:

# 创建索引
PUT /test1_index#查看所有已存在的索引
GET _cat/indices

3.2 删除索引

#删除索引
DELETE /test1_index

四、ES 文档 API 

ES 为索引添加文档,有专门的 Document API

  • 创建文件

  • 查询文档

  • 更新文档

  • 删除文档

4.1 创建文档

创建文档,需要指定 ID:

# 创建一个文档(指定 ID)
POST /test2_index/_doc/1
{
"username": "sky2",
"age": 18,
"salary": 1000000
}

# 创建一个文档(不指定 ID)
POST /test2_index/_doc
{
"username": "sky3",
"age": 28,
"salary": 2000000
}

注意:创建文档时,如果索引不存在,ES 会自动创建对应的 index 和 type。 

4.2 查询文档

# 查询文档,指定要查询的文档 id
GET /test2_index/_doc/1

# 查询文档,搜索所有文档,用 _search
GET /test2_index/_search
{"query": {"term": {"_id": "1"}}}
}

4.3 批量创建文档

es 允许通过 _bulk 一次创建多个文档,从而减少网络传输开销,提升写入速率。 

# 批量创建 document
POST _bulk
{"index":{"_index":"tt","_id":"1"}}
{"name":"sky3","age":"18"}
{"create":{"_index":"tt","_id":"2"}}
{"name":"zhangsan","age":"30"}
{"delete":{"_index":"tt","_id":"2"}}
{"update":{"_id":"1","_index":"tt"}}
{"doc":{"age":"20"}}

4.4 批量查询文档

es 允许通过 _mget 一次查询多个文档。

#批量查询document
GET _mget
{"docs": [{"_index": "tt","_id": "1"},{"_index": "tt","_id": "2"}]
}

相关内容

热门资讯

【实验报告】实验一 图像的... 实验目的熟悉Matlab图像运算的基础——矩阵运算;熟悉图像矩阵的显示方法࿰...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
大模型落地比趋势更重要,NLP... 全球很多人都开始相信,以ChatGPT为代表的大模型,将带来一场NLP领...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
kuernetes 资源对象分... 文章目录1. pod 状态1.1 容器启动错误类型1.2 ImagePullBackOff 错误1....
STM32实战项目-数码管 程序实现功能: 1、上电后,数码管间隔50ms计数; 2、...
TM1638和TM1639差异... TM1638和TM1639差异说明 ✨本文不涉及具体的单片机代码驱动内容,值针对芯...
Qt+MySql开发笔记:Qt... 若该文为原创文章,转载请注明原文出处 本文章博客地址:https://h...
Java内存模型中的happe... 第29讲 | Java内存模型中的happen-before是什么? Java 语言...
《扬帆优配》算力概念股大爆发,... 3月22日,9股封单金额超亿元,工业富联、鸿博股份、鹏鼎控股分别为3.0...
CF1763D Valid B... CF1763D Valid Bitonic Permutations 题目大意 拱形排列࿰...
SQL语法 DDL、DML、D... 文章目录1 SQL通用语法2 SQL分类3 DDL 数据定义语言3.1 数据库操作3.2 表操作3....
文心一言 VS ChatGPT... 3月16号,百度正式发布了『文心一言』,这是国内公司第一次发布类Chat...
CentOS8提高篇5:磁盘分...        首先需要在虚拟机中模拟添加一块新的硬盘设备,然后进行分区、格式化、挂载等...
Linux防火墙——SNAT、... 目录 NAT 一、SNAT策略及作用 1、概述 SNAT应用环境 SNAT原理 SNAT转换前提条...
部署+使用集群的算力跑CPU密... 我先在开头做一个总结,表达我最终要做的事情和最终环境是如何的,然后我会一...
Uploadifive 批量文... Uploadifive 批量文件上传_uploadifive 多个上传按钮_asing1elife的...
C++入门语法基础 文章目录:1. 什么是C++2. 命名空间2.1 域的概念2.2 命名...
2023年全国DAMA-CDG... DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义...
php实现助记词转TRX,ET... TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的...
【分割数据集操作集锦】毕设记录 1. 按要求将CSV文件转成json文件 有时候一些网络模型的源码会有data.json这样的文件里...
Postman接口测试之断言 如果你看文字部分还是不太理解的话,可以看看这个视频,详细介绍postma...
前端学习第三阶段-第4章 jQ... 4-1 jQuery介绍及常用API导读 01-jQuery入门导读 02-JavaScri...
4、linux初级——Linu... 目录 一、用CRT连接开发板 1、安装CRT调试工具 2、连接开发板 3、开机后ctrl+c...
Urban Radiance ... Urban Radiance Fields:城市辐射场 摘要:这项工作的目标是根据扫描...
天干地支(Java) 题目描述 古代中国使用天干地支来记录当前的年份。 天干一共有十个,分别为:...
SpringBoot雪花ID长... Long类型精度丢失 最近项目中使用雪花ID作为主键,雪花ID是19位Long类型数...
对JSP文件的理解 JSP是java程序。(JSP本质还是一个Servlet) JSP是&#...
【03173】2021年4月高... 一、单向填空题1、大量应用软件开发工具,开始于A、20世纪70年代B、20世纪 80年...
LeetCode5.最长回文子... 目录题目链接题目分析解题思路暴力中心向两边拓展搜索 题目链接 链接 题目分析 简单来说࿰...