【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础

目录

一、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 会自动生成。

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第1张图片

1.3.2 索引 Index

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

doc_index:

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第2张图片

1.3.3 字段 Filed

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

doc_index:

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第3张图片

  • 字符串: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 字段组成。

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第4张图片

二、ES 操作方式

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

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

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

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第5张图片

2.1 Curl 命令操作 ES 

2.1.1 安装 ElasticSearch

Elasticsearch 7.8.1 下载地址:Elasticsearch 7.8.1 | Elastic

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第6张图片

[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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第7张图片

[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/

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第8张图片点击左侧导航栏的堆栈监测:

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第9张图片点击使用内部收集设置:

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第10张图片【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第11张图片

可以查看到监控信息:

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第12张图片

2.2.3 使用 DEV Tools 操作 ES

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第13张图片

三、ES 索引 API 

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

3.1 创建索引

创建索引 api 如下:

# 创建索引
PUT /test1_index

#查看所有已存在的索引
GET _cat/indices

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第14张图片

3.2 删除索引

#删除索引
DELETE /test1_index

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第15张图片

四、ES 文档 API 

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

  • 创建文件

  • 查询文档

  • 更新文档

  • 删除文档

4.1 创建文档

创建文档,需要指定 ID:

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第16张图片

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第17张图片

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

4.2 查询文档

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第18张图片

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第19张图片

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"}}

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第20张图片

4.4 批量查询文档

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

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

【Elastic (ELK) Stack 实战教程】02、ElasticSearch 基础_第21张图片

上一篇文章:【Elastic (ELK) Stack 实战教程】01、Elastic Stack 概述_Stars.Sky的博客-CSDN博客

下一篇文章:【Elastic (ELK) Stack 实战教程】03、ElasticSearch 集群搭建_Stars.Sky的博客-CSDN博客

你可能感兴趣的:(Elastic,(ELK),Stack,学习笔记,elasticsearch,elk,搜索引擎)