基本名词解释:
> Index相似于mysql数据库中的database
> Type相似于mysql数据库中的table表,es中能够在Index中创建type(table),经过mapping进行映射。
> Document因为es存储的数据是文档型的,一条数据对应一篇文档即至关于mysql数据库中的一行数据row,一个文档中能够有多个字段也就是mysql数据库一行能够有多列。
> Fieldes中一个文档中对应的多个列与mysql数据库中每一列对应
> Mapping能够理解为mysql或者solr中对应的schema,只不过有些时候es中的mapping增长了动态识别功能,感觉很强大的样子,其实实际生产环境上不建议使用,最好仍是开始制定好了对应的schema为主。
> Indexed就是名义上的创建索引。mysql中通常会对常用的列增长相应的索引用于提升查询速度,而在es中默认都是会加上索引的,除非你特殊制定不创建索引只是进行存储用于展现,这个须要看你具体的需求和业务进行设定了。
> Query DSL相似于mysql的sql语句,只不过在es中是使用的json格式的查询语句

ES的CURD

1. ES的查询:NoSql形式的文档存储- 结构化查询- 相关性排序2. 数据存储,文档的3个必须的元数据信息(3个元数据组合确定唯一的文档)
_index:文档在哪存放(索引名)
_type:文档表示的对象类别(索引中的逻辑分区)
_id:文档唯一标识(主键)3. RestApi:索引基础操作
> 创建索引(自定义id)PUT /_index/_type/_id-H 'ContextType:application/json'-d {"name":"admin","age":23}> 创建索引(ES自动生成id)PUT /_index/_type-H 'ContextType:application/json'-d {"name":"admin","age":23}> 获取文档数据GET /_index/_type/_id                             获取携带元数据的文档信息GET /_index/_type/_id/_source                     获取_source的信息,即:put时的json数据GET /_index/_type/_id?_source=field1,field2       获取_source中指定属性信息,即:json中的属性信息> 校验文档存在HEAD /_index/_type/_id                            相应状态码200,则表示存在> 更新文档:同所有NoSQL一样,非结构数据不可以更新,可以覆盖(官网解释:在内部,Elasticsearch 已将旧
文档标记为已删除,并增加一个全新的文档。 尽管你不能再对旧版本的文档进行访问,但它并不会立即消失。当
继续索引更多的数据,Elasticsearch 会在后台清理这些已删除文档)PUT /_index/_type/_id                             相应数据中_version字段标识更新的次数-H 'ContextType:application/json'-d {"name":"admin2","age":23}> 文档存在不插入,不存在插入(主要区分:创建、更新)PUT /_index/_type/_id/_create- 插入成功:201 Created- 插入失败:409 Conflict> 删除文档DELETE /_index/_type/_id4. 并发处理:乐观锁思路- 之前有提到的更新的时候_version也会随之改变,所以利用乐观锁的方式校验_version来空值并发问题。- PUT /_index/_type/_id?version=1 (只有当文档中_version=1的时候,更新成功)- 使用外部系统控制- PUT /_index/_type/_id?version_type=external&version=10(当文档中_version<10的时候更新,并将_version设置为10)5. 更新原理:a. 检索并修改它,然后重新索引整个文档(检索-修改-重建索引)b. 文档不能被修改,只能被替换6. 修改文档部分字段:a. POST /_index/_type/_id/_update        (可以减少重建索引的步骤,从而优化时间)-H 'ContextType:application/json'-d {"name":"admin2","age":23}b. POST /_index/_type/_id/_update        (脚本执行:ctx._source)-H 'ContextType:application/json'-d {"script":"ctx._source.age+=1"}&脚本调用方式随之版本改动 (ElasticSearch 6.2.1使用官网处理数组失败)官网使用说明:https://www.elastic.co/guide/cn/elasticsearch/guide/current/partial-updates.html7. 修改文档的并发问题:在检索的时候获取当前_version,更新时重建索引会校验_version。如果出现并发问题,这会提交失败。官网推出属性:retry_on_conflict- POST /website/pageviews/1/_update?retry_on_conflict=5疑问:a. 如果每次更新ES都做这样的处理,岂不是没有并发问题,那又何来Put时,携带version参数来实现乐观锁的操作?b. 官网说修改部分字段可以缩小(检索-重建索引)的时间,说明 索引-修改-重建索引 的步骤并没有减少吗?官网说:update API 简单使用与之前描述相同的 检索-修改-重建索引 的处理过程。 区别在于这个过程发生在分片内部,这样就避免了多次请求的网络开销。(我的理解:PUT方式修改重建索引是发生在所有分片中,update发生在单个分片中)c. 数据是如何分片存储的?8. 批量获取:mgetAPI要求有一个docs数组作为参数,每个元素包含需要检索文档的元数据,包括_index、 _type 和 _id
eg: GET http://124.71.80.133:9201/website_index/blog_type/_mget{"ids": ["00000001","00000002"]}
eg: GET http://124.71.80.133:9201/_mget{"docs":[{"_index":"website_index","_type":"blog_type","_id":"00000001"},{"_index":"website_index","_type":"blog_type","_id":"00000002","_source":"title"}]}9. 批量操作:bulk API (批处理api)- 与 mget 可以使我们一次取回多个文档同样的方式, bulk API 允许在单个步骤中进行多次 create 、index 、 update 或 delete 请求。 如果你需要索引一个数据流比如日志事件,它可以排队和索引数百或数千批次。官网URL: https://www.elastic.co/guide/cn/elasticsearch/guide/current/bulk.html

ES入门之CURD-1相关推荐

  1. OpenGL ES入门(使用指南)

    转载地址:https://www.ict528.com/wpozv3sz3srrtywpoq1qvuyqooqxz1usvwr2uqoo.html. OpenGL ES 入门 一.前言 OpenGL ...

  2. php es使用,PHP的ES入门(一)—— Index的创建和删除

    大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...

  3. OpenGL ES 入门之旅--灰度,旋涡,马赛克滤镜

    前情提要 这篇滤镜效果的实现是在上一篇分屏滤镜的基础上来进行实现的,同样的前提是可以利用GLSL加载一张正常的图片. 详情请参考上一篇OpenGL ES 入门之旅--分屏滤镜 下面步入这篇的正题: 灰 ...

  4. es入门学习7-java-es自身API

    es入门学习7-java-es自身API 使用起前面的集群环境进行学习 一. 公共的东西 1.1.项目位置 1.2.导入依赖 <dependency><groupId>org. ...

  5. OpenGL ES入门详解

    http://blog.csdn.net/wangyuchun_799/article/details/7736928 版权声明:本文为博主原创文章,未经博主允许不得转载.  1.决定你要支持的Ope ...

  6. PHP的ES入门(一)—— Index的创建和删除

    大神请看 本文不一定写的全部都对,如果有哪里写得不好或者不对,可以提但请不要喷,不喜勿看绕道走就是了,虽然有可能在一些小知识点上会误导小白,但是还是可以看看基础的ES操作,对于使用还是一点帮助的 ES ...

  7. es入门 和 dsl语法部分讲解

    ElasticSearch与Lucene的关系 Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库(框架) 但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成 ...

  8. ES入门学习:ElasticSearch、Kibana、ik分词器的安装、简单使用及SpringBoot集成

    前言 es是采用Java语言开发,因此,想要安装运行es需要提前准备好jdk环境,关于linux配置jdk在前文linux配置jdk 本文主要介绍es的安装.kibana的安装和简单使用及ik分词器的 ...

  9. (十)ES 入门教程

    本文为学习笔记,主要用于记录本人学习过程.部分内容为转载!!!!. 1. ElasticSearch介绍 1.1 介绍 官方网址:https://www.elastic.co/cn/products/ ...

最新文章

  1. 三十之惑–面霸的八月(第一部分)
  2. [译] 什么是 JavaScript 生成器?如何使用生成器?
  3. VITIS 2019.2使用非正式测评
  4. 10-4 6-4 查询厂商“D“生产的PC和便携式电脑的平均价格 (10 分)思路+详解+测试用例
  5. 数据库设置_CentOS7 - 设置MySQL数据库
  6. 概率语言模型及其变形系列-PLSA及EM算法
  7. Remoting PerfMon Service
  8. 雪球产品定价-蒙特卡罗模拟法
  9. 计算机关于剪贴板的知识,如何打开电脑剪贴板图文教程
  10. python:NBA比赛数据分析
  11. 台式计算机能装蓝牙吗,台式机如何安装蓝牙
  12. boost::log::trivial用法的测试程序
  13. 【CF724F】Uniformly Branched Trees 动态规划
  14. 蓝桥杯科学素养题(2020年12月-2021年12月)
  15. python画笔属性_python 画图 turtle 模块介绍之(一)
  16. fabio 安装试用实际使用的几个问题
  17. iframe不能显示内容的问题
  18. 计算机考试题库access,计算机二级access真题题库试题精选(附答案)-20210623194307.docx-原创力文档...
  19. Web前后端缓存技术
  20. SN74LVC245ARGYR与SN74LVCH245ARGYR的区别

热门文章

  1. ajax打开后回调事件,[AJAX系列]onreadystatechange事件
  2. java 二叉树实验报告_20172310《程序设计与数据结构》(下)实验二:二叉树实验报告...
  3. 为什么国内做不出 JetBrains 那样的产品?
  4. Python实现程序自动发送短信
  5. 后验概率与条件概率区别
  6. Unity 动画系统:Animation
  7. 微软认真了!微软Surface平板强来袭击,采用IntelX86 I5 CPU 支持Windows8 Pro版本 全面兼容PC端软件
  8. “无法将虚拟机更改为选定的监视器布局”解决方法
  9. EDA电子设计自动化01--简介
  10. java中找不到文件是什么情况_java系统找不到指定文件怎么办