ElasticSearch学习02--使用Kibana管理ES

需要先安装ElasticSearch、Kibana以及IK分词器。本文使用的ES是v7.3.2版本。

安装好之后,启动ElasticSearch(默认9200端口),

启动Kibana(默认5601端口)

1.索引的操作

1.1 创建一个索引

# 创建一个索引
PUT /person
{
  "settings": {
    "number_of_shards": 5, 
    "number_of_replicas": 1
  }
}

1.2 查看索引信息

(1)使用Kibana中的management界面查看索引信息

(2)使用restful命令查看

# 查看索引信息
GET /person

查询的结果为:

{
  "person" : {
    "aliases" : { },
    "mappings" : { },
    "settings" : {
      "index" : {
        "number_of_shards" : "5",
        "blocks" : {
          "read_only_allow_delete" : "true"
        },
        "provided_name" : "person",
        "creation_date" : "1608118330592",
        "number_of_replicas" : "1",
        "uuid" : "CPim2GG-S221jLc6f67nJw",
        "version" : {
          "created" : "7030299"
        }
      }
    }
  }
}

1.3 删除索引

(1)使用Kibana中的management界面删除索引信息

(2)使用restful命令删除索引

# 删除索引
DELETE /person

2 ES中Field可以指定的类型

字符串类型:

  text:一般被用于全文检索。将当前Field进行粉刺。

  keyword:当前Field不会被分词。

数值类型:

  long:长整型

  integer:整型

  short:短整型

  byte:字节

  double:双精度浮点

  float:单精度浮点。

  half_float:精度比float小一半。

  scaled_float:根据一个long和scaled来表达一个浮点型数值。

时间类型:

  date类型,针对时间类型指定具体的格式

布尔类型:

  boolean类型,表达true或false

二进制类型:

  binary类型暂时支持Base64编码的字符串

范围类型:

  integer-range:赋值时,无需指定具体数值,只需指定一个范围即可。

  long-range:赋值时,无需指定具体数值,只需指定一个范围即可。

  float-range:赋值时,无需指定具体数值,只需指定一个范围即可。

  double-range:赋值时,无需指定具体数值,只需指定一个范围即可。

  date-range:

  ip-range:

经纬度数据类型:

  geo-point:存储经纬度。

ip类型:

  ip:可存储IPV4或IPV6的格式。

  

3.创建索引并指定数据结构

# 创建索引并指定数据结构
PUT /book
{
  "settings": {
    "number_of_shards": 5, #分片数
    "number_of_replicas": 1 #备份数
  },
  "mappings": { #指定数据结构
    "properties":{ #各个Field
      "name":{ # Field属性名
        "type":"text", #类型
        "analyzer":"ik_max_word", #分词器
        "index":true, #指定当前Field可以被作为查询条件
        "store":false #是否需要额外存储
      },
      "author":{
        "type":"keyword"
      },
      "count":{
        "type":"long"
      },
      "onsale":{
        "type":"date",
      "format":"yyyy-MM-dd hh:mm:ss||yyyy-MM-dd||epoch_millis" # 指定时间类型的格式化方式
      },
      "descr":{
        "type":"text",
        "analyzer":"ik_max_word"
      }
    }
  }
}

创建的结果:

{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "index" : "book"
}

4.文档的操作

文档在ES服务中的唯一标识:_index,_type,_id三个内容为组合,确定一个文档及其操作是添加还是修改

4.1 新建文档

(1)自动生成_id

# 添加文档,自动生成id
POST /book/_doc
{
  "name":"机器学习",
  "author":"周志华",
  "count":100000,
  "on-sale":"2016-01-01",
  "descr":"机器学习宝典"
}

生成的id为:SBHOZncBtz0RL73LqSeF

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "SBHOZncBtz0RL73LqSeF",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

(2)添加文档,手动指定id

# 添加文档,手动指定id
PUT /book/_doc/1
{
  "name":"深度学习",
  "author":"伊恩·古德费洛",
  "count":200000,
  "on-sale":"2017-07-01",
  "descr":"深度学习宝典"
}

生成的id为:1

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 1,
  "result" : "created",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 0,
  "_primary_term" : 1
}

4.2 修改文档

(1)覆盖式修改

PUT /book/_doc/1
{
  "name":"深度学习",
  "author":"伊恩·古德费洛",
  "count":250000,
  "on-sale":"2017-07-01",
  "descr":"深度学习宝典"
}

执行结果为:

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 2,
  "result" : "updated",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 1,
  "_primary_term" : 1
}

(2)doc修改方式

# 修改文档
POST /book/_update/1
{
  "doc":{
    "count":250020
  }
}

修改结果为:

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 3,
  "result" : "noop",
  "_shards" : {
    "total" : 0,
    "successful" : 0,
    "failed" : 0
  }
}

4.3 删除文档

# 删除索引
DELETE /book/_doc/1

删除结果为:

{
  "_index" : "book",
  "_type" : "_doc",
  "_id" : "1",
  "_version" : 4,
  "result" : "deleted",
  "_shards" : {
    "total" : 2,
    "successful" : 1,
    "failed" : 0
  },
  "_seq_no" : 3,
  "_primary_term" : 1
}
原文地址:https://www.cnblogs.com/asenyang/p/14367446.html