• 重学Elasticsearch第2章 : ElasticSearch客户端操作索引、映射、文档



    Kibana的基本操作

    我们通过Kibana的Dev Tools来充当Elasticsearch客户端来操作ES

    索引(Index)的基本操作

    PUT /ems/       创建索引
    DELETE /ems	 删除索引
    DELETE /*		     删除所有索引
    
    • 1
    • 2
    • 3
    GET /_cat/indices?v 			查看索引信息;
    
    健康情况   状态   索引名  索引id  分片数  副本数  文档数量      删除文档数量  文档大小     主分片文档大小
    health  status  index  uuid   pri    rep    docs.count docs.deleted store.size pri.store.size 
    
    • 1
    • 2
    • 3
    • 4

    创建

    # 1.创建索引
    - PUT /索引名 ====> PUT /products
    - 注意: 
    		1.ES中索引健康转态  red(索引不可用) 、yellow(索引可用,存在风险)、green(健康)
    		2.默认ES在创建索引时回为索引创建1个副本索引和1个分片索引
    		
    # 2.创建索引 进行索引分片配置
    - PUT /products
    {
      "settings": {
        "number_of_shards": 1, #指定主分片的数量
        "number_of_replicas": 0 #指定副本分片的数量
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述

    查询

    # 查询索引
    - GET /_cat/indices?v
    
    • 1
    • 2

    在这里插入图片描述

    删除

    # 删除索引
    - DELETE /索引名 =====> DELETE /products
    - DELETE /*     `*代表通配符,代表所有索引`
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    映射(mapping)操作

    创建

    只有text类型才会进行分词,其他类型都不会分词

    字符串类型: keyword 关键字 关键词 、text 一段文本

    数字类型:integer, long

    小数类型:float, double

    布尔类型:boolean

    日期类型:date

    # 1.创建索引&映射
    
    • 1
    PUT /products
    { 
      "settings": {
        "number_of_shards": 1,
        "number_of_replicas": 0
      }, 
      "mappings": {
        "properties": {
          "title":{
            "type": "keyword"
          },
          "price":{
            "type": "double"
          },
          "created_at":{
            "type": "date"
          },
          "description":{
            "type": "text"
          }
        }
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    说明: ES中支持字段类型非常丰富,如:text、keyword、integer、long、ip 等。更多参见https://www.elastic.co/guide/en/elasticsearch/reference/7.15/mapping-types.html

    查询

    # 1.查看某个索引的映射
    - GET /索引名/_mapping =====> GET /products/_mapping
    
    • 1
    • 2

    在这里插入图片描述

    文档(document)的基本操作

    添加文档

    PUT /ems/_doc/1   #/索引/类型/id  #在es7.x类型为_doc, 已经舍弃了自定义type
    {
      "name":"赵小六",
      "age":23,
      "bir":"2012-12-12"
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    查询文档

    GET /ems/_doc/1  
    返回结果:
    {
      "_index": "ems",
      "_type": "_doc",
      "_id": "1",
      "_version": 1,
      "found": true,
      "_source": {
        "name": "赵小六",
        "age": 23,
        "bir": "2012-12-12"
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    删除文档

    DELETE /ems/_doc/1
    {
      "_index": "ems",
      "_type": "_doc",
      "_id": "1",
      "_version": 2,
      "result": "deleted", #删除成功
      "_shards": {
        "total": 2,
        "successful": 1,
        "failed": 0
      },
      "_seq_no": 1,
      "_primary_term": 1
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    更新文档

    1.第一种方式  更新原有的数据
        POST /ems/_update/1
        {
          "doc":{
            "name":"xiaohei"
          }
        }
        
    2.第二种方式  添加新的数据
    # post可以不指定id创建文档,put方式必须指定id
        POST /ems/_update/1
        {
            "name":"xiaohei",
            "age":11,
            "dpet":"你好部门" #在mapping中会默认创建dpet信息
        }
        
    3.第三种方式 在原来数据基础上更新
        POST /ems/_update/1
        {
          "script": "ctx._source.age += 5"
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    ES的使用语法风格为:
    <REST Verb> /<Index>/_doc/<ID>
    REST操作    /索引/_doc/文档id
    
    • 1
    • 2
    • 3

    批量操作 (不是原子操作)

    _bulik(批量操作) 添加(index) 删除(delete) 更新(update)

    1. 批量往索引中添加两个文档
    PUT /test_es/_bulk
     {"index":{"_id":"12"}} 
    		{"name": "John Doe10","age":10,"bir":"2012-12-10"}
     {"index":{"_id":"13"}}  
    		{"name": "Jane Doe11","age":11,"bir":"2012-12-11"}
        
    2. 更新文档同时删除文档
        POST /dangdang/_bulk
    		{"update":{"_id":"1"}}
    			{"doc":{"name":"lisi"}}
    		{"delete":{"_id":2}}
    		{"index":{}}
    			{"name":"xxx","age":23}
     
    注意:批量时不会因为一个失败而全部失败,而是继续执行后续操作,批量在返回时按照执行的状态开始返回
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
  • 相关阅读:
    torch搭建神经网络(三)
    智慧园区信息化管理系统发展现状及难题
    【计算机组成原理】数据的存储和排列
    Postgresql垃圾回收Vacuum优化手册
    猫头虎分享已解决Bug || Null Pointer Exception: `java.lang.NullPointerException`
    idea使用Spring Initializer创建springboot项目的坑【保姆级教学】
    达梦数据守护搭建测试遇到create link to dmwatcher() error问题
    【吴恩达机器学习-笔记整理】异常检测与高斯分布
    AUTOSAR汽车电子嵌入式编程精讲300篇-基于嵌入式惯导技术的移动靶车设计(中)
    Eureka服务注册与发现
  • 原文地址:https://blog.csdn.net/m0_37989980/article/details/126117544