前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6.索引数据的基本操作

6.索引数据的基本操作

作者头像
AI码师
发布2023-09-11 09:09:22
1380
发布2023-09-11 09:09:22
举报
基本操作

创建索引结构

代码语言:javascript
复制
PUT lglbc_crud
{
  "mappings": {
    "properties": {
      "age":{
        "type": "integer"
      },
      "stu_no":{
        "type": "keyword"
      },
      "score":{
        "type": "float"
      },
      "birth":{
        "type":"date"
      }
  }
  }
}

添加数据

代码语言:javascript
复制
POST lglbc_crud/_doc/1
{
  "age":10,
  "stu_no":"1301098762",
  "score":90.8,
  "birth":"2023-07-01"
}

更新数据

代码语言:javascript
复制
PUT lglbc_crud/_doc/1
{
  "age":15,
  "stu_no":"1301098762"
}

更新指定字段

代码语言:javascript
复制
POST lglbc_crud/_update/1
{
  "doc": {
    "age": 18,
    "stu_no": "1301098762"
  }
}

查询数据

代码语言:javascript
复制
GET lglbc_crud/_doc/1

删除数据

代码语言:javascript
复制
DELETE lglbc_crud/_doc/1

批量提交

每次查询、删除、更新等操作,都会与ES建立一次连接,这会导致大量的请求打在ES服务器上面,从而间接导致数据索引变慢,那么ES是不是可以搞一个批量请求提交,多个操作都在一个请求中完成?答案当然是可以的啦,那我们看下怎么操作

代码语言:javascript
复制
POST lglbc_bulk/_bulk
{"index":{"_id":"1"}}
{"id":1,"name":"乐哥聊编程"}
{"update":{"_id":"1"}}
{"doc":{"id":1,"name":"乐哥聊编程3"}}

执行次请求后,做一次查询,可以看到name为“乐哥聊编程3”

代码语言:javascript
复制
POST lglbc_bulk/_bulk
{"index":{"_id":"1"}}
{"id":1,"name":"乐哥聊编程"}
{"update":{"_id":"1"}}
{"doc":{"id":1,"name":"乐哥聊编程3"}}
{"delete":{"_id":"1"}}

执行完这个,数据将被删除

索引重建

在产线环境,我们都是使用静态mapping,用了一段时间后,业务需求有变动,我们需要更新字段类型或者数据量太大,我们需要扩展分片数量,但是经过前面的学习,大家都知道,这些都是无法修改的,所以我们的解决办法通常是重建索引,然后将老数据给merge过去,那我们来看下ES如何实现这个功能

  • 创建旧索引
代码语言:javascript
复制
PUT lglbc_reindex_old/_doc/1
{
  "name":"乐哥聊编程",
  "count":"10"
}
  • 查看旧索引信息
    • settings:{分片1个,副本1个}
    • mappings:{name:text,count:text}
代码语言:javascript
复制
GET lglbc_reindex_old

{
  "lglbc_reindex_old": {
    "aliases": {},
    "mappings": {
      "properties": {
        "count": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        },
        "name": {
          "type": "text",
          "fields": {
            "keyword": {
              "type": "keyword",
              "ignore_above": 256
            }
          }
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "1",
        "provided_name": "lglbc_reindex_old",
        "creation_date": "1690618771362",
        "number_of_replicas": "1",
        "uuid": "x23pbFDvQl2nNQg0tfRyBQ",
        "version": {
          "created": "8090099"
        }
      }
    }
  }
}

创建新索引,指定分片2个,副本2个,name:keyword,count:long

创建新索引

代码语言:javascript
复制
PUT lglbc_reindex_new
{
  "mappings": {
    "properties": {
      "name": {
        "type": "keyword"
      },
      "count": {
        "type": "long"
      }
    }
  },
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 2
  }
}

看下配置

代码语言:javascript
复制
{
  "lglbc_reindex_new": {
    "aliases": {},
    "mappings": {
      "properties": {
        "count": {
          "type": "long"
        },
        "name": {
          "type": "keyword"
        }
      }
    },
    "settings": {
      "index": {
        "routing": {
          "allocation": {
            "include": {
              "_tier_preference": "data_content"
            }
          }
        },
        "number_of_shards": "3",
        "provided_name": "lglbc_reindex_new",
        "creation_date": "1690618970812",
        "number_of_replicas": "2",
        "uuid": "sNl1jnMoSVukb3ii3lO9Rg",
        "version": {
          "created": "8090099"
        }
      }
    }
  }
}

执行索引重建

  • source:旧索引信息
  • dest:目标索引信息
代码语言:javascript
复制
POST _reindex
{
  "source": {"index": "lglbc_reindex_old"},
  "dest": {"index": "lglbc_reindex_new"}
}

检索新索引数据

代码语言:javascript
复制
GET lglbc_reindex_new/_search

{
  "took": 4,
  "timed_out": false,
  "_shards": {
    "total": 3,
    "successful": 3,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 1,
    "hits": [
      {
        "_index": "lglbc_reindex_new",
        "_id": "1",
        "_score": 1,
        "_source": {
          "name": "乐哥聊编程",
          "count": "10"
        }
      }
    ]
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乐哥聊编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建索引结构
  • 添加数据
  • 更新数据
  • 更新指定字段
  • 查询数据
  • 删除数据
  • 批量提交
  • 索引重建
    • 创建新索引
      • 执行索引重建
        • 检索新索引数据
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档