ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ElasticSearch 7.x学习笔记(三)---索引+映射+文档操作

2021-12-21 13:03:46  阅读:136  来源: 互联网

标签:GET doc 样例 --- 索引 文档 ElasticSearch POST true


(一)索引的相关操作

  • 创建索引库

// 语法
PUT /索引名称
{
   settings:{
      "属性名":"属性值"   
  }
}
// settings:就是索引库设置,其中可以定义索引库的各种属性 比如分片数,副本数等,目前我们可以不设置,都走默认
// 样例
# 仅创建索引
PUT /index2

# 创建索引并设置分片数和副本数
PUT /index2
{
  "settings": {
    "number_of_replicas": 1,
    "number_of_shards": 1
  }
}
  • 判断索引是否存在

// 语法
HEAD /索引名

// 样例
HEAD /index2
  • 查看索引

// 语法
GET /索引名称1,索引名称2

// 样例
# 单个查看索引
GET /index2
# 批量查看索引
GET /index1,index2
  • 查看所有索引

#方式一
GET _all

#方式二
GET /cat/indices?v
  • 开启索引

// 语法
POST /索引名称/_open
      
//样例
POST /index2/_open
  • 关闭索引

// 语法
// 索引关闭情况下,无法向索引库添加数据
POST /索引名称/_close
  
// 样例
POST /index2/_close
  • 删除索引

// 语法
DELETE /索引名称1,索引名称2,索引名称3...

// 样例
DELETE /index1,index2

(二)映射的相关操作

索引创建之后,等于有了关系型数据库中的database。Elasticsearch7.x取消了索引type类型的设置,不允许指定类型,默认为_doc,但字段仍然是有的,我们需要设置字段的约束信息,叫做字段映射(mapping) 字段的约束包括但不限于:字段的数据类型,是否要存储,是否要索引,分词器
  • 创建映射字段

// 语法
PUT /索引库名/_mapping 
{ 
    "properties": { 
         "字段名": { 
             "type": "类型",
             "index": true, 
             "store": true, 
             "analyzer": "分词器" 
          } 
     } 
}
// 字段名:任意填写,下面指定许多属性,例如:
// type:类型,可以是text、long、short、date、integer、object等
// index:是否索引,默认为true 
// store:是否存储,默认为false
// analyzer:指定分词器 

// 样例
PUT /index3/_mapping/ 
{ 
  "properties": { 
    "name": { 
      "type": "text", 
      "analyzer": "ik_max_word" 
    },
    "job": { 
      "type": "text", 
      "analyzer": "ik_max_word" 
    },
    "logo": { 
      "type": "keyword", 
      "index": "false" 
    },
    "payment": { 
      "type": "float" 
    } 
  } 
}                                
  • 映射属性详解

  1. type:

常用类型介绍: String类型,又分两种:text:可分词,不可参与聚合,keyword:不可分词,数据会作为完整字段进行匹配,可以参与聚合 Numerical:数值类型,分两类,基本数据类型:long、interger、short、byte、double、float、half_float,浮点数的高精度类型:scaled_float,需要指定一个精度因子,比如10或100。elasticsearch会把真实值乘以因子后存储,取出还原。 Date:日期类型,elasticsearch可以对日期格式化为字符串存储,但是建议我们存储为毫秒值,存储为long,节省空间。 Array:数组类型,进行匹配时,任意一个元素满足,都认为满足,排序时,如果升序则用数组中的最小值来排序,如果降序则用数组中的最大值来排序 Object:对象  

    2.index

index影响字段的索引情况。true:字段会被索引,则可以用来进行搜索。默认值就是true。false:字段不会被索引,不能用来搜索。index的默认值就是true,也就是说你不进行任何配置,所有字段都会被索引。但是有些字段是我们不希望被索引的,比如企业的logo图片地址,就需要手动设置index为false。

   3.store

是否将数据进行独立存储。原始的文本会存储在 _source 里面,默认情况下其他提取出来的字段都不是独立存储的,是从_source 里面提取出来的。当然你也可以独立的存储某个字段,只要设置store:true即可,获取独立存储的字段要比从_source中解析快得多,但是也会占用更多的空间,所以要根据实际业务需求来设置,默认为false。 

   4.analyzer:指定分词器

一般我们处理中文会选择ik分词器 ik_max_word ik_smart 
  • 查看映射关系

// 语法
GET /索引名称/_mapping
      
样例
GET /index3/_mapping
  • 查看所有映射关系

// 方式一
GET _mapping

// 方式二
GET _all/_mapping
  • 修改索引映射关系 

// 语法
PUT /索引库名/_mapping
{ 
  "properties": { 
    "字段名": { 
      "type": "类型", 
      "index": true, 
      "store": true, 
      "analyzer": "分词器" 
    } 
  } 
}

// 样例
PUT /index3/_mapping
{ 
  "properties": { 
    "name": { 
      "type": "text", 
      "index": true, 
      "store": true, 
      "analyzer": "ik_max_word" 
    } 
  } 
}

(三)文档的相关操作

文档,即索引库中的数据,会根据规则创建索引,将来用于搜索。可以类比做数据库中的一行数据。
  •  新增文档

// 语法(指定ID)
POST /索引名称/_doc/{id}
// 语法(不指定ID)
POST /索引名称/_doc

// 样例,指定ID
POST /index3/_doc/1 { 
    "name": "leqi", 
    "job": "金蝶需求分析师", 
    "payment": "30000",
    "logo": "http://xxx.png" 
}
  
// 样例,不指定ID
POST /index3/_doc{ 
    "name": "leqi", 
    "job": "金蝶需求分析师", 
    "payment": "30000",
    "logo": "http://xxx.png" 
}
  • 查看单个文档

// 语法
GET /索引名称/_doc/{id}

// 样例
GET /index3/_doc/1

元素元数据介绍

  •  查看所有文档

// 语法
POST /索引名称/_search
{
  "query": {
    "match_all": {}
  }
}

// 样例
POST /index3/_search
{
  "query": {
    "match_all": {}
  }
}

文档的全量更新只需要将创建文档的POST 请求换成PUT就行了,id如果存在是就会自动更新,不存在时就会自动创建

  • 文档更新(局部更新)

// 语法
POST /索引名/_update/{id} 
{ 
    "doc":{ 
        "field":"value" 
    } 
} 

// 样例
POST /index3/_update/1
{ 
    "doc":{ 
        "name":"lisi" 
    } 
}    
  • 删除文档

// 语法
DELETE /索引名/_doc/{id}

// 样例
DELETE /index3/_doc/1
  
// 根据查询条件删除
POST /索引库名/_delete_by_query
{
  "query": {
    "match": {
      "字段名": "搜索关键字"
    }
  }
}       

标签:GET,doc,样例,---,索引,文档,ElasticSearch,POST,true
来源: https://www.cnblogs.com/tianyong0609/p/15711723.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有