• 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
    }
  • 相关阅读:
    mysql启动时报错:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql/data/mysql.pid)
    awk技巧【转】
    在分析nginx日志时常用命令总结【转】
    mybatis 详解(八)------ 懒加载
    mybatis 详解(七)------一对一、一对多、多对多
    mybatis 详解(六)------通过mapper接口加载映射文件
    mybatis 详解(五)------动态SQL
    mybatis 详解(四)------properties以及别名定义
    mybatis 详解(三)------入门实例(基于注解)
    mybatis 详解(二)------入门实例(基于XML)
  • 原文地址:https://www.cnblogs.com/asenyang/p/14367446.html
Copyright © 2020-2023  润新知