ElasticSearch的简单介绍与使用【入门篇】

三连哦

一、ElasticSearch简介

1、 Elasticsearch

        Elasticsearch是一个基于Apache Lucene™的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。特点:

  • 分布式的实时文件存储,每个字段都被索引并可被搜索
  • 分布式的实时分析搜索引擎–做不规则查询
  • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

        Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2 、ES能做什么?

全文检索(全部字段)、模糊查询(搜索)、数据分析(提供分析语法,例如聚合)

3、 基本概念

1、Index(索引)

动词,相当于 MySQL 中的 insert;
名词,相当于 MySQL 中的 Database

2、Type(类型)

Index(索引)中,可以定义一个或多个类型。
类似于 MySQL 中的 Table;每一种类型的数据放在一起;

3、Document(文档)

保存在某个索引(Index)下,某种类型(Type)的一个数据(Document),文档是 JSON 格
式的,Document 就像是 MySQL 中的某个 Table 里面的内容;

二、安装

1、教程

地址☞:一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】

三、初步检索

1、_cat

GET /_cat/nodes:查看所有节点
GET /_cat/health:查看 es 健康状况
GET /_cat/master:查看主节点
GET /_cat/indices:查看所有索引 show databases;

测试案例

GET /_cat/nodes:查看所有节点
在这里插入图片描述


GET /_cat/health:查看 es 健康状况
在这里插入图片描述


GET /_cat/master:查看主节点
在这里插入图片描述


GET /_cat/indices:查看所有索引 show databases;
在这里插入图片描述

2、索引一个文档(保存)

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识。
PUT customer/external/3: 在 customer 索引下的external 类型下保存 3号数据为

{
    
    
    "name":"zhang san"
}

在这里插入图片描述
提示:

PUT 和 POST 都可以,
POST 新增。如果不指定 id,会自动生成 id。指定 id 就会修改这个数据,并新增版本号
PUT 可以新增可以修改。PUT 必须指定 id;由于 PUT 需要指定 id,我们一般都用来做修改操作,不指定 id 会报错。

3、查询文档

GET customer/external/3

查询结果
在这里插入图片描述

字段解释:

{
    
    
	"_index": "customer",       //在哪个索引
	"_type": "external",        //在哪个类型
	"_id": "3",                 //记录 id
	"_version": 4,              //版本号
	"_seq_no": 14,              //并发控制字段,每次更新就会+1,用来做乐观锁
	"_primary_term": 24,        //同上,主分片重新分配,如重启,就会变化
	"found": true,
	"_source": {
    
                    //真正的内容
		"name": "zhang san"
	}
}

4、更新文档

POST customer/external/3
{
    
    
    "name":"Li si"
}

或者 POST customer/external/3/_update
{
    
    
    "doc":{
    
    
        "name":"hello postman"
    }
}

或者 PUT customer/external/3
{
    
    
    "name":"Wang mazi"
}

使用POST customer/external/3
在这里插入图片描述


使用POST customer/external/3/_update
在这里插入图片描述


使用 PUT customer/external/3
在这里插入图片描述

提示:不同点对比

POST 操作会对比源文档数据,如果相同不会有什么操作,文档 version 不增加PUT 操作总会将数据重新保存并增加 version 版本;带_update 对比元数据如果一样就不进行任何操作。看场景;对于大并发更新,不带 update;对于大并发查询偶尔更新,带 update;对比更新,重新计算分配规则。

更新同时增加属性

PUT 和 POST 不带_update 也可以

POST customer/external/3/_update
{
    
     
    "doc": {
    
     "name": "Jane Doe", "age": 20 }
}

在这里插入图片描述

5、删除文档&索引

5.1 删除文档

//删除文档
DELETE customer/external/3

在这里插入图片描述


删除后查询、查询不到相关数据
在这里插入图片描述

5.2 删除索引

//删除索引
DELETE customer

连续删除同一个索引、第二次删除会报错索引不存在。
在这里插入图片描述

6、bulk 批量 API

使用kibana工具

POST /customer/external/_bulk
{
    
    "index":{
    
    "_id":"1"}}
{
    
    "name": "John Doe" }
{
    
    "index":{
    
    "_id":"2"}}
{
    
    "name": "Jane Doe" }

语法格式

{
    
     action: {
    
     metadata }}\n
{
    
     request body }\n
{
    
     action: {
    
     metadata }}\n
{
    
     request body }\n

测试 POST /customer/external/_bulk
在这里插入图片描述

POST /_bulk
{
    
     "delete": {
    
     "_index": "website", "_type": "blog", "_id": "123" }}
{
    
     "create": {
    
     "_index": "website", "_type": "blog", "_id": "123" }}
{
    
     "title": "My first blog post" }
{
    
     "index": {
    
     "_index": "website", "_type": "blog" }}
{
    
     "title": "My second blog post" }
{
    
     "update": {
    
     "_index": "website", "_type": "blog", "_id": "123"} }
{
    
     "doc" : {
    
    "title" : "My updated blog post"} }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

提示:

bulk API 以此按顺序执行所有的 action(动作)。如果一个单个的动作因任何原因而失败,它将继续处理它后面剩余的动作。当 bulk API 返回时,它将提供每个动作的状态(与发送的顺序相同
),所以您可以检查是否一个指定的动作是不是失败了

7、样本测试数据

准备了一份顾客银行账户信息的虚构的 JSON 文档样本。每个文档都有下列的 schema(模式)

{
    
    
	"account_number": 0,
	"balance": 16623,
	"firstname": "Bradshaw",
	"lastname": "Mckenzie",
	"age": 29,
	"gender": "F",
	"address": "244 Columbus Place",
	"employer": "Euron",
	"email": "[email protected]",
	"city": "Hobucken",
	"state": "CO"
}

数据地址:https://github.com/elastic/elasticsearch/blob/7.5/docs/src/test/resources/accounts.json

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43304253/article/details/129880266