博客转载 方面自己查看

目录

  • 1 创建index(配置mapping[映射])
  • 2 查看index
  • 3 修改index
  • 4 删除index
  • 5 打开/关闭index
  • 6 常见问题及解决方法
  • 版权声明

Elasticsearch中的index相当于RDBMS(关系型数据库, 比如MySQL)中的DataBase.
本篇文章通过Kibana插件, 演示了ES的基础语法: 对ES中的index进行CRUD(增删改查)以及关闭、开启操作.

阅读须知:

在ES 6.x之前的版本中, 每个index中可以有多个type, 类似于MySQL中每个数据库可以有多张表, 可在ES 6.0开始, 每个index都只能有1个type.
本篇文章写作较早, 用的是ES 5.6版本, 因此有些操作可能出现不支持等问题, 还请读者查阅解决:-)

1 创建index(配置mapping[映射])

(1) 创建语法:

PUT index
{"settings": { ... some settings ... },"mappings": {// ES 6.x开始不再支持1个index中同时存在多个type"type1": { ... some mappings ... },"type2": { ... some mappings ... },...}
}

如果不指定settings和mappings, 直接插入数据时, ES会根据要插入数据的类型, 自动创建相关配置 —— 功能强大, 但扩展性不够, 后续若有其他原因需要修改mappings, 会很困难.

—— 所以创建index时, 推荐手动指定settings和mappings的相关配置. 可以参考文章: ES XX - ES的mapping的设置.

(2) 创建示例:

PUT address        // 关于地址(address)的索引
{"settings": {"number_of_shards": 1,    // 默认分片数为5"number_of_replicas": 0   // 默认副本数为1},"mappings": {"province": {             // type是province(省份)"properties": {"name": {"type": "text"  // 存储类型是text},"area": {"type": "float"}}}}
}

(3) 创建结果:

{"acknowledged": true,"shards_acknowledged": true,"index": "address"
}

2 查看index

(1) 查看示例:

GET address// 也可同时查看多个索引, 类似于删除操作:
GET *
GET _all
GET *index*
GET address,shop// 在6.0之前的版本中, 还可以指定返回某些指定项的结果:
GET address/_settings,_mappings
  • 弃用提示:

查看索引时, 若通过","分隔要返回的结果, Elasticsearch将抛出如下警告:

#! Deprecation: Requesting comma-separated features is deprecated and will be removed in 6.0+, retrieve all features instead.

意为: Elasticsearch不推荐使用逗号分隔功能, 将在6.0+中删除. 建议不要使用",", 而是直接检索全部数据, 或检索某一项的结果.

在ES 6.6.0中将直接出现:

{"error": "Incorrect HTTP method for uri [/address/_settings,_mappings?pretty] and method [GET], allowed: [POST]","status": 405
}

换做POST请求时, 必须携带请求体, 仍然不支持.

(2) 查看的结果:

{"address": {"aliases": {},"mappings": {"province": {"properties": {"area" : {"type" : "float"},"name" : {"type" : "text"}}}},"settings": {"index": {"creation_date": "1542108754899","number_of_shards": "1","number_of_replicas": "0","uuid": "MMpLNHzZR8K1k48rJplWVw","version": {"created": "6060099"},"provided_name": "address"}}}
}

3 修改index

修改索引的示例:

PUT address/_settings
{"number_of_replicas": 1      // 修改副本数为1
}

说明: Elasticsearch中的分片数(number_of_shards)只能在创建索引时设置, 无论是否添加过数据, 都不支持修改.

这与文档的路由有关, 而Solr的SPLITSHARD可以算作动态修改分片的另一种思路: 只对某一路由范围内的进行拆分, 可以参考 管理SolrCloud集群 (创建集合、切割分片、更新配置) 第5节的内容.
关于修改ES的分片数, 应该有其他思路, 后期了解到再作研究整理.

4 删除index

删除索引需要指明索引名称、别名或通配符.
Elasticsearch支持同时删除多个索引, 或使用_all通配符*删除全部索引.

删除示例:

DELETE address        // 删除指定索引
DELETE index1,index2  // 删除多个索引
DELETE index_*        // 按通配符删除以'index_'开头的索引
DELETE _all           // 删除全部索引

为避免_all操作误删除全部索引, 可在配置文件elasticsearch.yml中作如下配置:

# 要求操作索引时必须指定索引的名称
action.destructive_requires_name: true

5 打开/关闭index

(1) 操作说明:

① 可以打开一个已经打开/关闭的索引, 以最后一次操作为准;
② 可以关闭一个已经关闭/打开的索引, 以最后一次操作为准;
③ 关闭的索引只能查看index的配置信息, 不能对内部的索引数据进行读写操作.

(2) 操作示例:

// 可以使用_all打开或关闭全部索引, 也可使用通配符(*)配合操作
POST address/_close
POST address/_open

说明事项:

① 使用_all或通配符操作索引, 都会受到配置文件中action.destructive_requires_name=true的限制.
② 关闭的索引会继续占用磁盘空间, 却又不能使用 —— 造成磁盘空间的浪费.
③ 可以在配置文件中禁止使用关闭索引的功能: settingscluster.indices.close.enable=false, 默认为true(开启).

6 常见问题及解决方法

(1) 查看不存在的索引时, 将抛出如下错误信息:

如果要查看的索引不存在, 比如GET addre, 就会抛出类似下面的异常信息:

{"error" : {"root_cause" : [{"type" : "index_not_found_exception","reason" : "no such index","resource.type" : "index_or_alias","resource.id" : "addre","index_uuid" : "_na_","index" : "addre"}],"type" : "index_not_found_exception","reason" : "no such index","resource.type" : "index_or_alias","resource.id" : "addre","index_uuid" : "_na_","index" : "addre"},"status" : 404
}

(2) 在6.0之前的版本中, 如果修改已经关闭了的索引, 会抛出类似于下面的错误:

{"error": {"root_cause": [{"type": "illegal_argument_exception","reason": "Can't update [index.number_of_replicas] on closed indices [[address/MMpLNHzZR8K1k48rJplWVw]] - can leave index in an unopenable state"}],"type": "illegal_argument_exception","reason": "Can't update [index.number_of_replicas] on closed indices [[address/MMpLNHzZR8K1k48rJplWVw]] - can leave index in an unopenable state"},"status": 400
}

在本篇博客演示所用的Elasticsearch 6.6.0版本中, 并不存在此异常信息.

ES 05 - 增删改查、打开、关闭Elasticsearch的索引相关推荐

  1. ES搜索引擎增删改查操作

    目录 ES查询操作 match查询 ES索引操作 创建索引 ES添加修改操作 添加操作 修改操作 ES删除操作 删除索引 删除document es概述:Es搜索引擎概述和语句案例_派大猩9527的博 ...

  2. Spring boot 中使用BBoss-ES进行ES的增删改查

    最近项目中有文件信息需要快速索引,就打算把原来存储到MYSQL里面的数据全部存储到ES中 一下是代码 yml配置 ```yaml elasticsearch:bboss:elasticUser:ela ...

  3. es java 增删改查_【java作业】如何用序列化的方法写增删改查

    培训19天的时候老师布置了一个用序列化反序列化做学生管理系统的作业.百度没找到怎么写,后来老师写了一份,我就贴出来吧.对蠢萌蠢萌.纱布拉基的我来说真TM难 首先你的包和里面的类是跟下图这样的:Work ...

  4. ElasticSearch初体验之使用Java进行最基本的增删改查

    好久没写博文了, 最近项目中使用到了ElaticSearch相关的一些内容, 刚好自己也来做个总结. 现在自己也只能算得上入门, 总结下自己在工作中使用Java操作ES的一些小经验吧. 本文总共分为三 ...

  5. elasticsearch的增删改查

    增删改查是数据库的基础操作方法.ES 虽然不是数据库,但是很多场合下,都被 人们当做一个文档型 NoSQL 数据库在使用,原因自然是因为在接口和分布式架构 层面的相似性.虽然在 Elastic Sta ...

  6. Elasticsearch在thinkphp5中的使用增删改查(模糊查询、批量查询)

    Elasticsearch在thinkphp5中的使用(模糊查询) 需要安装elasticsearch.elastic-header-master.kibana.analysis-ik四个包,如下图所 ...

  7. go-elasticSearch实战篇,带你学会elasticSearch的增删改查

    前言 哈喽,everybody,这是go-elastic学习系列教程第二篇文章.上一篇我们学习了ElasticSearch基础,如果还不懂基础的,可以先看一看上一篇文章,传送门.这一篇我们开始实战,写 ...

  8. python中的切片能否修改元祖_Python列表的增删改查和元祖

    一.定义列表 1.names = ['mike','mark','candice','laular'] #定义列表 2.num_list = list(range(1,10)) #range生成1-1 ...

  9. 商城项目16_es简介、详解倒排索引、安装es以及kibana、检索es基本信息、增删改查文档

    文章目录 ①. es - 背景.概述.功能.场景 ②. 核心概念 - 索引.类型.文档.映射 ③. es - 详解倒排索引 ④. 安装elasticSearch.kibana 7.4.2 ⑤. 索引操 ...

最新文章

  1. 【论文精读】Temporally Refined Graph U-Nets for Human Shape and Pose Estimation From Monocular Videos
  2. c语言计算机培训,C语言计算机基础学习||新手入门必看
  3. HugeGraphServer 部署安装
  4. 分布式锁的几种实现方式~
  5. 刀片服务器虚拟化哪家好,刀片服务器TOP5 细数虚拟化时代利器
  6. python03_Python中的列表、元组、字典和集合
  7. Tosca :配置环境参数
  8. WPF基础到企业应用系列7——深入剖析依赖属性(WPF/Silverlight核心)
  9. FlasCC例子研究之bitmapdata
  10. Android Studio3.5 JNIDemo实现步骤详解
  11. VS语音信号处理(1) C语言读取WAV语音文件文件头数据
  12. 学计算机二级的免费软件,计算机二级MS模拟软件
  13. AutoCAD 2018安装教程
  14. chrome插件(Markdown Nice):用 markdown 写微信公众号
  15. iOS 聊天表情键盘
  16. 10款iOS高效开发必备的Objective-C类库(转)
  17. python之禅中文原文_Python之禅翻译
  18. through mysql.sock_MySQL server through socket '/tmp/mysql.sock' (2)
  19. bfs+状压——朋也与光玉
  20. <OS Concepts> 1- Intro

热门文章

  1. 206367-33-1,抗菌肽pBD-1
  2. 安卓开发中Bundle使用方法:
  3. nginx 反向代理与负载均衡应用实践
  4. Android学习笔记--7.listView的使用
  5. 手机 html5 hammer drag widget,Hammer.js+轮播原理实现简洁的滑屏功能
  6. Hammer设置详解
  7. 端口映射实现手机做服务器
  8. 基于php的大学生社交 交友网站
  9. drupal安装教程mysql_Drupal8 安装教程
  10. springboot 配置德鲁伊连接池