目录
一、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 的方式去变更我们的资源状态。
-
通过 URI 指定要操作的资源,比如 Index、Document;
-
通过 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"
}
]
}
上一篇文章:【Elastic (ELK) Stack 实战教程】01、Elastic Stack 概述_Stars.Sky的博客-CSDN博客
下一篇文章:【Elastic (ELK) Stack 实战教程】03、ElasticSearch 集群搭建_Stars.Sky的博客-CSDN博客