原文:Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

下面的操作 都是是kibana 中的 dev Tools工具操作的

一、索引

一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。


  1. #查看所有索引相关信息
  2. GET /_cat/indices?v
  3. #创建索引
  4. PUT customer
  5. #查看所有索引相关信息
  6. GET customer
  7. #删除索引
  8. DELETE customer
  9. #查看索引的文档总数
  10. GET kibana_sample_data_ecommerce/_count
  11. #查看前10条文档,了解文档格式
  12. POST kibana_sample_data_ecommerce/_search
  13. {
  14. }

二、文档CRUD

一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文档,当然,也可以拥有某个订单的一个文档。文档以 JSON(Javascript Object Notation)格式来表示。

1 create 创建文档

_create 指定类型为create并不是type名称 默认是_doc 指定 ID 如果已经存在,就报错


  1. #create document. _create 指定类型为create并不是type名称 默认是_doc 指定 ID 如果已经存在,就报错
  2. PUT users/_create/1
  3. {
  4.      "user" : "Jack2",
  5.     "post_date" : "2019-05-15T14:12:12",
  6.     "message" : "trying out Elasticsearch"
  7. }

如果是id是1文档存在 在创建就会报错

2 index  创建文档

index和 create不一样地方:index 如果文档不错,就索引新的文档。如果文档存在就覆盖原有的文档内容。版本信息+1

3 GET查询索引

get 根据文档id查询 文档内容

4 Update 修改文档

update 修改文档 不会删除原文档 而是在 文档的基础上更新文档中的字段内容

#  _update 才会根据文档中字段信息 在原文档上增加字段 必须带有doc

  POST users/_update/1/

   {

    "doc":{

        "post_date" : "2019-05-18T14:12:12",

        "message" : "trying out ElasticsearchOut",

        "phone" : "1806185",

        "pubtest":[1,2,3],

        "pubtest2":"[1,2,3]"

     }

 }

5 DELETE 删除文档

### Delete by Id

     # 删除文档

    DELETE users/_doc/1

6 查看索引的 maping 信息

maping 相当于表的 schema

GET users/_mapping

三 文档批量操作

bulk api 批量操作

1、bulk相当于数据库里的bash操作。

2、引入批量操作bulk,提高工作效率,你想啊,一批一批添加与一条一条添加,谁快?

3、bulk API可以帮助我们同时执行多个请求

4、bulk的格式:

action:index/create/update/delete

metadata:_index,_type,_id

request body:_source (删除操作不需要加request body)

{ action: { metadata }}

{ request body        }

单条操作失败不会影响其他操作

5、bulk里为什么不支持get呢?

  答:批量操作,里面放get操作,没啥用!所以,官方也不支持。

6、create 和index的区别

  如果数据存在,使用create操作失败,会提示文档已经存在,使用index则可以成功执行。

7、bulk一次最大处理多少数据量?

  bulk会把将要处理的数据载入内存中,所以数据量是有限制的,最佳的数据量不是一个确定的数值,它取决于你的硬件,你的文档大小以及复杂性,你的索引以及搜索的负载。

  一般建议是1000-5000个文档,如果你的文档很大,可以适当减少队列,大小建议是5-15MB,默认不能超过100M,可以在es的配置文件(即$ES_HOME下的config下的elasticsearch.yml)中。


  1. ### Bulk 操作 批量操作,其中一步错误,不影响其他操作
  2. PUT _bulk
  3. {"index":{"_index":"test","_id":"1"}}
  4. {"name":"dukun","post_date" : "2019-05-18T14:12:12","age":18,"phone" : "1806185","sex":"男"}
  5. {"index":{"_index":"test","_id":"2"}}
  6. {"name":"dukun02","post_date" : "2019-05-18T14:12:12","age":25,"phone" : "19888","sex":"男"}
  7. {"create":{"_index":"test","_id":"3"}}
  8. {"name":"dukun03","post_date" : "2019-05-19T14:12:12"}
  9. {"update":{"_index":"test","_id":"3"}}
  10. {"doc" :{"name":"dukun04","phone" : "1806185","age":28,"sex":"男"}}
  11. {"delete":{"_index":"test","_id":"4"}}

mget 批量读取

批量操作可以减少网络连接所带来的开销,提供性能。


  1. ##批量查询mget
  2. GET /_mget
  3. {
  4. "docs":[
  5. {
  6. "_index" : "test",
  7. "_id" : "1"
  8. },
  9. {
  10. "_index" : "test",
  11. "_id" : "3"
  12. }
  13. ]
  14. }
  15. ##批量查询mget url中指定索引 可以简化如下
  16. GET test/_mget
  17. {
  18. "ids":[1,2,3]
  19. }
  20. #批量查询mget 中_source过滤默认_source字段会返回所有的内容,
  21. 你也可以通过_source进行过滤。
  22. 比如使用_source,_source_include 包含字段,_source_exclude 查询排除字段. "_source" : false 不显示字段
  23. GET test/_mget
  24. {
  25. "docs":[
  26. { "_id":"1",
  27. "_source" : false
  28. },
  29. { "_id":"1",
  30. "_source" : true
  31. },
  32. { "_id":"2",
  33. "_source" : ["name","age"]
  34. },
  35. {
  36. "_id":"3",
  37. "_source":{
  38. "include":["name","age","sex"]
  39. }
  40. },
  41. {
  42. "_id":"3",
  43. "_source":{
  44. "exclude":["name","age","sex"]
  45. }
  46. }
  47. ]
  48. }

批量查询  _msearch

使用match_all进行查询,并且只返回第一个文档。如果没有指定size的值,则默认返回前10个文档

也可以指定返回从哪个文档开始,返回多少文档.

took —— Elasticsearch执行这个搜索的耗时,以毫秒为单位

timed_out —— 指明这个搜索是否超时

_shards —— 指出多少个分片被搜索了,同时也指出了成功/失败的被搜索的shards的数量

hits —— 搜索结果

hits.total —— 能够匹配我们查询标准的文档的总数目

hits.hits —— 真正的搜索结果数据(默认只显示前10个文档)

Elasticsearch7.X 入门学习第二课笔记----基本api操作和CRUD的更多相关文章

  1. Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation

    原文:Elasticsearch7.X 入门学习第九课笔记-----聚合分析Aggregation 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. ...

  2. Elasticsearch7.X 入门学习第一课笔记----基本概念

    原文:Elasticsearch7.X 入门学习第一课笔记----基本概念 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https: ...

  3. Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍

    原文:Elasticsearch7.X 入门学习第五课笔记---- - Mapping设定介绍 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本 ...

  4. Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板

    原文:Elasticsearch7.X 入门学习第八课笔记-----索引模板和动态模板 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...

  5. Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer

    原文:Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...

  6. Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介)

    原文:Elasticsearch7.X 入门学习第四课笔记---- Search API之(Request Body Search 和DSL简介) 版权声明:本文为博主原创文章,遵循CC 4.0 BY ...

  7. Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search)

    原文:Elasticsearch7.X 入门学习第三课笔记----search api学习(URI Search) 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...

  8. CI(CodeIgniter)框架入门教程——第二课 初始MVC

    本文转载自:http://www.softeng.cn/?p=53 今天的主要内容是,使用CodeIgniter框架完整的MVC内容来做一个简单的计算器,通过这个计算器,让大家能够体会到我在第一节课中 ...

  9. python学习第二次笔记

    python学习第二次记录 1.格式化输出 name = input('请输入姓名') age = input('请输入年龄') height = input('请输入身高') msg = " ...

随机推荐

  1. vue安装 js-cookie

    首先在命令行工具输入:npm install vue-js-cookie 安装完成之后在需要使用的页面导入:import Cookies from 'js-cookie' 这样就可以使用了,如下图,先 ...

  2. CF1244C

    题目描述 给出n,p,w,d,求(x,y,z)使得 xw+yd=p x+y+z=n 其中d<w<10^5^ 题解 显然扩欧啊( 来自天国的long long y如果大于等于w,则显然可以把 ...

  3. HDU 6206 Apple ( 高精度 && 计算几何 && 三点构圆求圆心半径 )

    题意 : 给出四个点,问你第四个点是否在前三个点构成的圆内,若在圆外输出"Accepted",否则输出"Rejected",题目保证前三个点不在一条直线上. 分 ...

  4. 【CF1237C】Balanced Removals(降维)

    题意:三维平面上有n个点,每个点的坐标为(x[i],y[i],z[i]),n为偶数 现在要求取n/2次,每次取走一对点(x,y),要求没有未被取走的点在以x和y为对角点的矩形中 要求给出任意一组合法方 ...

  5. OpenCV Sift源码分析

    /*M/////////////////////////////////////////////////////////////////////////////////////////// IMPOR ...

  6. Android使用命令行操作数据库

    所有的应用程序本地文件都存放在/data/data/目录下 C:\Users\nicole>adb shell * daemon not running. starting it now on ...

  7. Internet History, Technology, and Security(week1)——History: Dawn of Electronic Computing

    前言: 第一次进行课程学习,在反复观看视频和查找字典翻译理解后选出了视频中个人认为较重要的概念,以下并不按照逐句翻译,中文概括大意余下自由发挥,对老师想要告诉我们的历史有一个初步的了解,顺便锻炼以下英 ...

  8. 设计模式学习笔记——Composite 组合模式

    用于描述无限层级的复杂对象,类似于描述资源管理器,抽象出每一个层级的共同特点(文件夹和文件,展开事件) 以前描述一个对象,是将整个对象的全部数据都描述清楚,而组合模式通过在对象中定义自己,描述自己的下 ...

  9. FMDB源码解析(上)-FMDB基本使用

    目录 一: 初识FMDB 二: 基本使用 三: 基本操作 结束 最后更新:2017-02-22 2017, 说到做到 一: 初识FMDB FMDB是iOS平台的SQLite数据库框架 FMDB以OC的 ...

  10. es之词库热更新解决方案

    1. 下载tomcat,作为远程词库的容器 , 需要在tomcat中配置词库 /webapp/ROOT这个路径下新建一个远程词库:​Vim hot.dicHot.dic中存放的就是实时热词 2.测试t ...