关于elasticsearch一些基本操作

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

 哈喽~大家好这篇来看看关于elasticsearch一些基本操作。

 🥇个人主页个人主页​​​​​               

🥈 系列专栏 【微服务】        

🥉与这篇相关的文章              

SpringCloud Sentinel 使用SpringCloud Sentinel 使用_程序猿追的博客-CSDN博客_springcloud使用sentinel
将Nacos注册到springboot使用以及Feign实现服务调用将Nacos注册到springboot使用以及Feign实现服务调用_程序猿追的博客-CSDN博客_nacos springboot 服务调用
微服务介绍与 SpringCloud Eureka微服务介绍与 SpringCloud Eureka_程序猿追的博客-CSDN博客

目录

一、前言

二、索引库的CRUD

1、创建索引库和映射

2、查询索引库

3、修改索引库

4、删除索引库

5、小结

三、文档操作

1、新增文档

2、查询文档

3、删除文档

4、修改文档

4.1、全量修改

4.2、增量修改

四、总结


一、前言

索引库就类似数据库表mapping映射就类似表的结构。

我们要向es中存储数据必须先创建“库”和“表”。

mapping映射属性

mapping是对索引库中文档的约束常见的mapping属性包括

type字段数据类型常见的简单类型有

字符串text(可分词的文本、keyword(精确值例如品牌、国家、ip地址

数值long、integer、short、byte、double、float、

布尔boolean

日期date

对象object

index是否创建索引默认为true

analyzer使用哪种分词器

properties该字段的子字段

eg

{
    "age": 21,
    "weight": 52.1,
    "isMarried": false,
    "info": "鸡你太美",
    "email": "xxxxxxx",
    "score": [99.1, 99.5, 98.9],
    "name": {
        "firstName": "阿萨德",
        "lastName": "对"
    }
}

对应的每个字段映射(mapping

age类型为 integer;参与搜索因此需要index为true;无需分词器

weight类型为float;参与搜索因此需要index为true;无需分词器

isMarried类型为boolean;参与搜索因此需要index为true;无需分词器

info类型为字符串需要分词因此是text;参与搜索因此需要index为true;分词器可以用ik_smart

email类型为字符串但是不需要分词因此是keyword;不参与搜索因此需要index为false;无需分词器

score虽然是数组但是我们只看元素的类型类型为float;参与搜索因此需要index为true;无需分词器

name类型为object需要定义多个子属性

name.firstName;类型为字符串但是不需要分词因此是keyword;参与搜索因此需要index为true;无需分词器

name.lastName;类型为字符串但是不需要分词因此是keyword;参与搜索因此需要index为true;无需分词器

二、索引库的CRUD

1、创建索引库和映射

基本语法

请求方式PUT

请求路径/索引库名可以自定义

请求参数mapping映射

格式

PUT /索引库名称
{
  "mappings": {
    "properties": {
      "字段名":{
        "type": "text",
        "analyzer": "ik_smart"
      },
      "字段名2":{
        "type": "keyword",
        "index": "false"
      }
      // ...略
    }
  }
}

示例

PUT /itxzw
{
  "mappings": {
    "properties": {
      "info": {
        "type": "text",
        "analyzer": "ik_smart"
      },
      "email": {
        "type": "keyword",
        "index": false
      },
      "name": {
        "type": "object",
        "properties": {
          "firstName": {
            "type": "keyword"
          },
          "lastName": {
            "type": "keyword"
          }
        }
      }
    }
  }
}

2、查询索引库

基本语法

请求方式GET

请求路径/索引库名

请求参数无

格式

GET /索引库名

示例

 

 

3、修改索引库

倒排索引结构虽然不复杂但是一旦数据结构改变(比如改变了分词器就需要重新创建倒排索引这简直是灾难。因此索引库一旦创建无法修改mapping

虽然无法修改mapping中已有的字段但是却允许添加新的字段到mapping中因为不会对倒排索引产生影响。

简称覆盖

语法说明

PUT /索引库名/_mapping
{
  "properties": {
    "新字段名":{
      "type": "integer"
    }
  }
}

示例

 

语法

请求方式DELETE

请求路径/索引库名

请求参数无

格式

DELETE /索引库名

在kibana中测试

 

 

4、删除索引库

语法

请求方式DELETE

请求路径/索引库名

请求参数无

格式

DELETE /索引库名

在kibana中测试

 

5、小结

创建索引库PUT /索引库名

查询索引库GET /索引库名

删除索引库DELETE /索引库名

添加字段PUT /索引库名/_mapping

三、文档操作

1、新增文档

语法

POST /索引库名/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    "字段3": {
        "子属性1": "值3",
        "子属性2": "值4"
    },
    // ...
}

示例

POST /itxzw/_doc/2
{
  "info": "xxxx队asd伍",
  "email": "asdbhaasds",
  "name": {
    "firstName": "阿萨德",
    "lastName": "sad"
  }
}

有 created就表示创建成功了

 

2、查询文档

根据rest风格新增是post查询应该是get不过查询一般都需要条件这里我们把文档id带上。

语法

GET /{索引库名称}/_doc/{id}

通过kibana查看数据

GET /itxzw/_doc/2

查看结果

 

3、删除文档

删除使用DELETE请求同样需要根据id进行删除

语法

DELETE /{索引库名}/_doc/id值

示例

# 根据id删除数据
DELETE /itxzw/_doc/2

4、修改文档

修改有两种方式

 全量修改直接覆盖原来的文档

 增量修改修改文档中的部分字段

4.1、全量修改

全量修改是覆盖原来的文档其本质是

 根据指定的id删除文档

 新增一个相同id的文档

注意如果根据id删除时id不存在第二步的新增也会执行也就从修改变成了新增操作了。

语法

PUT /{索引库名}/_doc/文档id
{
    "字段1": "值1",
    "字段2": "值2",
    // ... 略
}
示例
PUT /itxzw/_doc/1
{
    "info": "xxxxxx",
    "email": "xxxxxxxxxxxxxxxxxxxxxxxx",
    "name": {
        "firstName": "xx",
        "lastName": "xxxx"
    }
}

4.2、增量修改

增量修改是只修改指定id匹配的文档中的部分字段。

语法

POST /{索引库名}/_update/文档id
{
    "doc": {
         "字段名": "新的值",
    }
}

示例

POST /itxzw/_update/1
{
  "doc": {
    "email": "xxxxxxxxxx"
  }
}

四、总结

文档操作有哪些?

创建文档POST /{索引库名}/_doc/文档id { json文档 }

查询文档GET /{索引库名}/_doc/文档id

删除文档DELETE /{索引库名}/_doc/文档id

修改文档全量修改PUT /{索引库名}/_doc/文档id { json文档 }  增量修改POST /{索引库名}/_update/文档id { "doc": {字段}}

不积跬步无以至千里趁年轻使劲拼给未来的自己一个交代向着明天更好的自己前进吧

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6