Elasticsearch简单入门

一、Elasticsearch简介

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。

二、Elasticsearch相关概念

Elasticsearch具有映射(mapping)、索引(index)、类型(type)、文档(document)、副本和分片等概念。

索引表示一类数据的结构,类似关系型数据库中数据表结构的概念,但是并不规定这类数据中的所有结构都相同

映射是给索引定义的结构设置类型等配置,比如字段数据结构类型和是否开启索引等,映射只能添加字段配置,不可修改字段配置

类型是用来在逻辑上给索引中的所有数据划分成多个部分,在7.x及以上版本删掉这一概念,类型统一定义为 _doc 类型

文档Elasticsearch存储的一个个数据对象就是文档,并且这些数据对象是JSON结构的,类型关系型数据库中一行数据的概念,文档中的每个字段都可以被索引。一个索引中的所有文档的ID都应该是不同的。

副本就是文档的冗余存储,是存储多几份文档数据

分片分片就是给文档数据划分成多份数据,并且每份数据存储在不同的地方

三、基本操作

对Elasticsearch服务器执行相关数据操作时,可以发送HTTP或者HTTPS请求,也可以使用Kibana执行相关命令,在使用Kibana执行数据操作时,Kibana版本需要与Elasticsearch版本相对应。以下相关操作基于Eibana7.17.17和Elasticsearch7.17.17。

1、索引基本操作

创建名称为user的索引

shell 复制代码
PUT /user

响应:

json 复制代码
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "user"
}

查看名称为name索引信息

shell 复制代码
GET /user

响应

json 复制代码
{
  "user" : { # 索引名称
    "aliases" : { }, # 索引别名
    "mappings" : { }, # 索引映射
    "settings" : { # 索引配置
      "index" : {
        "routing" : {
          "allocation" : {
            "include" : {
              "_tier_preference" : "data_content"
            }
          }
        },
        "number_of_shards" : "1", # 分片数量
        "provided_name" : "user",
        "creation_date" : "1708869404053",
        "number_of_replicas" : "1", # 副本数量
        "uuid" : "7CTQFVh1QOmjZ3bopH-gQA",
        "version" : {
          "created" : "7171799"
        }
      }
    }
  }
}

删除名称为user的索引

shell 复制代码
DELETE /user

响应

json 复制代码
{
  "acknowledged" : true
}

获取全部索引

shell 复制代码
方式一:
GET /_all
方式二:
GET /_cat/indices?v

判断名称为user的索引是否存在

shell 复制代码
# 状态码为200表示存在,404表示不存在
HEAD /user

2、映射基本操作

给名称为user的索引配置映射

shell 复制代码
POST /user/_mapping
{ # 响应体
  "properties": {
    "name": { # 索引字段名称
      "type": "text" # 字段数据结构
    },
    "age": { # 索引字段名称
      "type": "long" # 字段数据结构
    }
  }
}

响应

json 复制代码
{
  "acknowledged" : true
}

查看名称为user的索引映射配置

shell 复制代码
GET /user/_mapping

响应

json 复制代码
{
  "user" : {
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "long"
        },
        "name" : {
          "type" : "text"
        }
      }
    }
  }
}

获取所有映射配置

shell 复制代码
方式一:
GET /_mapping
方式二:
GET /_all/_mapping

向映射配置中新增字段配置,如果需要删除映射配置,只能删除索引

shell 复制代码
POST /user/_mapping
{
  "properties": {
    "school": {
      "type": "text"
    }
  }
}

响应

json 复制代码
{
  "acknowledged" : true
}

3、文档基本操作

添加文档

shell 复制代码
PUT /user/_doc/111
{
  "name": "zhansang",
  "age": 18,
  "school": "华南理工大学"
}

响应

json 复制代码
{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "111",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 2
}

获取文档

shell 复制代码
GET /user/_doc/111

响应

json 复制代码
{
  "_index" : "user",
  "_type" : "_doc",
  "_id" : "111",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 2,
  "found" : true,
  "_source" : {
    "name" : "zhansang",
    "age" : 18,
    "school" : "华南理工大学"
  }
}

修改文档

shell 复制代码
方式一:使用添加文档操作来对文档进行全部字段修改
方式二:对文档部分字段进行修改或添加字段
POST /user/_update/111
{
  "doc": {
    "age": 19
  }
}

删除文档字段

shell 复制代码
POST /user/_update/111
{
  "script": "ctx._source.remove(\"class\")"
}

查看指定文档

shell 复制代码
GET /user/_doc/111

其它API参考

相关推荐
喝醉酒的小白17 分钟前
ES 集群 A 和 ES 集群 B 数据流通
大数据·elasticsearch·搜索引擎
炭烤玛卡巴卡21 分钟前
初学elasticsearch
大数据·学习·elasticsearch·搜索引擎
it噩梦23 分钟前
es 中使用update 、create 、index的区别
大数据·elasticsearch
Mitch3112 小时前
【漏洞复现】CVE-2015-3337 Arbitrary File Reading
elasticsearch·网络安全·docker·漏洞复现
Mitch3112 小时前
【漏洞复现】CVE-2015-5531 Arbitrary File Reading
web安全·elasticsearch·网络安全·docker·漏洞复现
喝醉酒的小白4 小时前
Elasticsearch(ES)监控、巡检及异常指标处理指南
大数据·elasticsearch·搜索引擎
孤水寒月6 小时前
Git忽略文件.gitignore
git·elasticsearch
LKAI.13 小时前
搭建Elastic search群集
linux·运维·elasticsearch·搜索引擎
it噩梦1 天前
elasticsearch中使用fuzzy查询
elasticsearch
喝醉酒的小白1 天前
Elasticsearch相关知识@1
大数据·elasticsearch·搜索引擎