Kibana 基本操作 ElaticSearch

ElaticSearch 基本概念

Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口(个人理解为基于RESTful风格的索引数据库)

接近实时(NRT Near Real Time )

Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒内)

索引(index)

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。索引类似于关系型数据库中Database 的概念。在一个集群中,如果你想,可以定义任意多的索引。

类型(type)

在一个索引中,你可以定义一种或多种类型一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。类型类似于关系型数据库中Table的概念

NOTE: 在5.x版本以前可以在一个索引中定义多个类型,6.x之后版本也可以使用,但是不推荐,在7~8.x版本中彻底移除一个索引中创建多个类型

映射(Mapping)

Mapping是ES中的一个很重要的内容,它类似于传统关系型数据中table的schema,用于定义一个索引(index)中的类型(type)的数据的结构。 在ES中,我们可以手动创建type(相当于table)和mapping(相关与schema),也可以采用默认创建方式。在默认配置下,ES可以根据插入的数据自动地创建type及其mapping。 mapping中主要包括字段名、字段数据类型和字段索引类型

文档(document)

一个文档是一个可被索引的基础信息单元,类似于表中的一条记录。比如,你可以拥有某一个员工的文档,也可以拥有某个商品的一个文档。文档以采用了轻量级的数据交换格式JSON(Javascript Object Notation)来表示。

ElaticSearch 概念关系结构图

在这里插入图片描述

Kibana 基本操作

Kibana是一个针对Elasticsearch的开源分析及可视化平台,使用Kibana可以查询、查看并与存储在ES索引的数据进行交互操作,使用Kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。
(先启动ES服务,在启动Kibana)
在这里插入图片描述

索引(index)基本操作

创建索引时,把类型和映射一并创建

#创建索引
PUT /wyc

#查看所有索引
GET /_cat/indices?v

#删除索引
DELETE /wyc

#删除所有索引  [慎用:ElasticSearch会自带两个索引如果删除kibana客户端将不能使用,只有重启]
DELETE /*

类型(type)基本操作

创建类型

注意: 这种方式创建类型要求索引不能存在

#类型操作 一个索引里只能存在一个类型
PUT /ems
{
  "mappings": {
    "emp":{
      "properties":{
        "id":{"type":"integer"},
        "name":{"type":"text"}
      }
    }
  }
}

/ems:即创建的索引名字

mappimgs”:映射,固定写法,即对类型的数据结构进行约束,这样在添加文档时,就会有约束

“emp”:即类型名,ES6之后建议一个索引创建一个类型

properties”:属性,固定写法,即将类型所要创建的属性添加在里面

“id” “name”…等:属性名

“type”:固定写法,约束类型,可以根据属性的不同写不同类型

Mapping Type: text , keyword , date ,integer, long , double , boolean or ip

查看类型

# 语法
GET /索引名/_mapping

# 比如
GET /ems/_mapping

文档(document)基本操作

添加文档

如果不指定id,ES默认会生成一个随机id,后面操作文档都根据此id
这也是为什么在给类型添加属性时,一般不添加id属性

# 语法 PUT /索引/类型/id

PUT /ems/emp/1
{
  "eid":2021326,
  "name":"测试ES"
}

#不指定ID
POST /ems/emp

获取文档

# 语法 GET /索引/类型/id

GET /ems/emp/1

结果:
{
  "_index" : "ems",
  "_type" : "emp",
  "_id" : "1",
  "_version" : 1,
  "_seq_no" : 0,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "eid" : 2021326,
    "name" : "测试ES"
  }
}

删除文档

# 语法 DELETE /索引/类型/id

DELETE /ems/emp/1

结果:
{
  "_index" : "ems",
  "_type" : "emp",
  "_id" : "1",
  "_version" : 2,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

更新文档

  • 不保留原始数据(先删除后插入)
POST /ems/emp/1
{
  "name":"张三"
}
  • 保留原始数据更新,且可添加新字段
    这种方式,type并没有新增的属性,但你添加的时候,ES会给你进行相应的匹配
POST /索引/类型/id/_update
    {
      "doc":{
        "属性名":"值"
      }
    }
POST /ems/emp/1/_update
{
  "doc":{
  "eid":555555,
  "name":"tetetetest"
  }
}

结果:
{
  "_index" : "ems",
  "_type" : "emp",
  "_id" : "1",
  "_version" : 2,
  "_seq_no" : 5,
  "_primary_term" : 1,
  "found" : true,
  "_source" : {
    "eid" : 555555,
    "name" : "tetetetest"
  }
}
  • 根据script脚本进行更新[使用较少]
POST /ems/emp/1/_update
{
  "script": "ctx._source.eid += 8888"
}

批量操作

有时候,想要同时添加文档、删除文档、修改文档、索引文档组合进行
使用关键词 _bulk

# 同时索引两个文档
PUT /ems/emp/_bulk
{"index":{"_id": "2"}}
  { "eid":"12456", "name":"nametetete"}
{"index":{"_id": "3"}}
  { "eid":"12456", "name":"name33"}
  
# 同时修改和删除文档
PUT /ems/emp/_bulk
{"update":{"_id":"3"}}
{"doc":{"name":"修改后name"}}
{"delete":{"_id":"2"}}

操作非原子性的,且弱化了事务

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值