阿里云ElasticSearch入门基础-增删改查

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 阿里云ElasticSearch入门基础-增删改查,基于阿里云全托管ElasticSearch,版本6.7

1. 基础语法

1.1. 系统相关

# 查看集群信息
GET / 
# 查看所有索引情况
GET /_cat/indices?v
# 查看节点
GET /_nodes/process?pretty
# 查看集群健康状态 索引级别
GET /_cluster/health?level=indices
# 查看索引恢复时间
GET /_recovery
# 索引red,如下命令查看详细原因
GET /_cluster/allocation/explain
# 允许集群使用通配符
PUT _cluster/settings
{
  "transient": {
    "action.destructive_requires_name": "false"
  }
}

1.2. 索引相关

1.2.1. 创建索引

PUT /product_info_sun
{
  "settings": {
    "number_of_shards": 5, # 不填默认索引是1个分片
    "number_of_replicas": 1 # 默认1个副本,最大为(节点-1)
  },
  "mappings": {
    "products": {
      "properties": {
        "productName": {
          "type": "text",
          "analyzer": "ik_smart"
        },
        "annual_rate":{
          "type":"keyword" # text和keyword都是文本类型,keyword默认不分词
        },
        "describe": {
         "type": "text",
         "analyzer": "ik_smart"
        }
      }
    }
  }
}


1.2.2. 删除索引

# 删除索引order
DELETE /order 
# 删除索引order1和order2
DELETE order1,order2
# 删除全部索引
DELETE _all
DELETE *
# 正则表达式匹配,删除product_info开头的索引
DELETE product_info*

1.2.3. 增加索引字段

ElasticSearch不支持修改索引,但可以添加新的字段

# 样例PUT /product_info_sun/products/_mapping
{
"properties": {
"age":{
"type": "integer"    }
  }
}


1.2.4. 修改索引配置

# 修改索引的setting配置,修改副本数为2
PUT /product_info_sun/_settings
{
    "number_of_replicas": 2
}

1.2.5. 开关索引

索引关闭会使数据flush到盘,对外不能读写,可以通过indices的status来进行判断image.png

# 关闭索引 test0621
POST /test0621/_close
# 打开索引 test0621
POST /test0621/_open

1.2.6 查看索引(排序)

# 查看集群下所有索引GET_cat/indices?v# 查看集群下所有索引并排序# 按照docs.count降序排列GET_cat/indices?v&s=docs.count:desc# 按照pri做降序,再按照docs.count做升序排列(默认升序)GET/_cat/indices?v&s=pri:desc,docs.count

1.2.7. 清除索引缓存

GET {索引名称}/_cache/clear

1.2.8. 索引只读

1.2.8.1. 使用场景

  1. 磁盘使用率超过阈值,索引自动设置为只读
  2. es实例迁移,设置只读防止在迁移后有脏数据写入旧实例的问题

1.2.8.2. 单条索引只读

# 样例
PUT /{索引名称}/_settings
{
  "index.blocks.read_only": true
}
# 或(不推荐,这个是kibana做的自动生成,取消只读的时候还是建议写全path)
PUT /{索引名称}/_settings
{
  "blocks.read_only": true
}
# 样例 设置为false 或者直接设置为 null
PUT /{索引名称}/_settings
{
  "index.blocks.read_only": false
}

1.2.8.3. 批量索引只读

  1. 需要先参考「1.1. 系统相关」的内容对通配符的使用限制进行放开
  2. 在kibana中使用`GET /_cat/indices?v&index={通配符表达式}`来验证通配符匹配上的所有索引是否符合预期
  3. 参考上文,将单条索引只读的请求中{索引名称}替换为{通配符表达式},对指定索引设置只读
# 样例
# 将product(售卖产品相关索引)均设为只读
PUT /product*/_settings
{
  "index.blocks.read_only": true
}
# 大招
PUT /_all/_settings
{
  "index.blocks.read_only": true
}


1.3. 增删改查-6.7

1.3.1. 写入数据

1.3.1.1. 写入单条

POST /{索引名}/{_type}/{主键id} # 主键id可以不添加,会自动随机生成
{
  "productName":"666",
  "age":12
}

image.png

1.3.1.2. _bulk

POST /product_info_sun/products/_bulk
{"index":{}}
{"productName":"理财产品A","annual_rate":"3.2200%","describe":"180天定期理财,最低20000起投,收益稳定,可以自助选择消息推送"}
{"index":{}}
{"productName":"理财产品B","annual_rate":"3.1100%","describe":"90天定投产品,最低10000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"理财产品C","annual_rate":"3.3500%","describe":"270天定投产品,最低40000起投,每天收益立即到账消息推送"}
{"index":{}}
{"productName":"理财产品D","annual_rate":"3.1200%","describe":"90天定投产品,最低12000起投,每天收益到账消息推送"}
{"index":{}}
{"productName":"理财产品E","annual_rate":"3.0100%","describe":"30天定投产品推荐,最低8000起投,每天收益会消息推送"}
{"index":{}}
{"productName":"理财产品F","annual_rate":"2.7500%","describe":"热门短期产品,3天短期,无须任何手续费用,最低500起投,通过短信提示获取收益消息"}

1.3.1.3. _reindex

POST _reindex
{
  "source": {
    "index": "product_info_sun",
    "size":1000,
    "query": {
      "match_all": {} 
    }
   },
  "dest": {
    "index": "product_info_sun2"
  }
}

1.3.2. 查询数据

1.3.2.1. 查询索引全部数据

GET _search
{
  "query": {
    "match_all": {}
  },
  "size":100
}

1.3.2.2. 查询某个索引数据总数

get /_cat/count/product_info_sun?v

1.3.2.3. 查询某个索引单条文档(根据主键查询)

GET /{索引名}/{_type}/id
# 样例
GET /product_info_sun/products/1

image.png

1.3.2.4. 查询某个索引全部数据

# 某个索引全部的数据
GET /product_info_sun/products/_search
# GET 后面的第一个"/"也可以不加
# size控制返回列表多少
GET product_info/products/_search
{
  "query": {
    "match_all": {}
  },
  "size":5
}

1.3.2.5. match查询某个索引

GET /product_info/products/_search
{
  "query": {
    "match": {
      "describe": "每天收益到账消息推送"
    }
  }
}

1.3.2.6. range查询某个索引

GET /product_info/products/_search
{
  "query": {
    "range": {
      "annual_rate": {
        "gte": "3.0000%",
        "lte": "3.1300%"
      }
    }
  }
}

1.3.3. 删除数据

1.3.3.1. 根据文档主键_id删除

# 用法
DELETE /{索引名}/{_type}/{索引id}
# 样例:
DELETE /product_info_sun/products/Vq-rzokBZmCAOVEgbP20

1.3.3.2. delete_by_query

POST {索引名}/{_type}/_delete_by_query
# 下面就是查询语句
{
  "query": {
    "match": {
      "productName": "产品D"
    }
  }
}

1.3.4. 修改数据

1.3.4.1. 全量修改

# 用法
PUT /{索引名}/{_type}/{主键id}
{
    数据
}
# 样例
PUT /product_info_sun/products/1
{
  "productName":"全量修改"
  ,"age":100
}

image.png

1.3.4.2. 增量修改(部分修改)

# 用法
POST /{索引名}/{_type}/{主键id}/_update
{
  "doc": {
    数据
  }
}
# 样例
POST /product_info_sun/products/1/_update
{
  "doc": {
    "age":1
  }
}

image.png

1.3.4.3. 注意事项

  1. es不同版本update语句写法不同,本样例以6.7的版本为例,7.X及其他版本具体可以参考官网文档如下所示https://www.elastic.co/guide/en/elasticsearch/reference/6.7/docs-update.html
  2. 如果文档更新时,文档数据中包含了索引mapping中没有的字段,则会按照默认规则创建索引,如果索引类型及参数不符合需求则需要先更改字段类型,再对数据做update或者insert。image.png
相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
5月前
|
API 网络架构 索引
Elasticsearch索引中数据的增删改查与并发控制
Elasticsearch索引中数据的增删改查与并发控制
|
6月前
|
安全 Linux 开发工具
Elasticsearch 搜索入门技术之一
Elasticsearch 搜索入门技术之一
257 1
|
6月前
|
JSON 自然语言处理 数据库
数据库-ElasticSearch入门(索引、文档、查询)
数据库-ElasticSearch入门(索引、文档、查询)
385 0
|
1月前
|
存储 Java API
Elasticsearch 7.8.0从入门到精通
这篇文章详细介绍了Elasticsearch 7.8.0的安装、核心概念(如正排索引和倒排索引)、RESTful风格、各种索引和文档操作、条件查询、聚合查询以及在Spring Boot中整合Elasticsearch的步骤和示例。
117 1
Elasticsearch 7.8.0从入门到精通
|
1月前
|
存储 分布式计算 大数据
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
大数据-169 Elasticsearch 索引使用 与 架构概念 增删改查
57 3
|
2月前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
2月前
|
存储 关系型数据库 MySQL
浅谈Elasticsearch的入门与实践
本文主要围绕ES核心特性:分布式存储特性和分析检索能力,介绍了概念、原理与实践案例,希望让读者快速理解ES的核心特性与应用场景。
|
3月前
|
JSON 搜索推荐 数据挖掘
ElasticSearch的简单介绍与使用【入门篇】
这篇文章是Elasticsearch的入门介绍,涵盖了Elasticsearch的基本概念、特点、安装方法以及如何进行基本的数据操作,包括索引文档、查询、更新、删除和使用bulk API进行批量操作。
ElasticSearch的简单介绍与使用【入门篇】
|
2月前
|
JSON 监控 Java
Elasticsearch 入门:搭建高性能搜索集群
【9月更文第2天】Elasticsearch 是一个分布式的、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 构建。它能够处理大量的数据,提供快速的搜索响应。本教程将指导你如何从零开始搭建一个基本的 Elasticsearch 集群,并演示如何进行简单的索引和查询操作。
208 3
|
3月前
|
JSON 测试技术 API
黑马商城 Elasticsearch从入门到部署 RestClient操作文档
这篇文章详细介绍了如何使用Java的RestHighLevelClient客户端与Elasticsearch进行文档操作,包括新增、查询、删除、修改文档以及批量导入文档的方法,并提供了相应的代码示例和操作步骤。

相关产品

  • 检索分析服务 Elasticsearch版