ElasticSearch学习之——基本的文档CURD

一、文档的添加

POST http://127.0.0.1:9200/{index}/{type}/{id}
{
"key":"value",
"key2":"value2",
"key2":"value2",
}

这是最基本的一个文档添加语句{index}表示添加的索引如果没有回自动建立(可以理解为数据库),{type}标示类型如果没有回自动建立(可以理解为表),{id}标示添加文档的id可以理解为数据库中的主键,添加的文档内容就是json 格式的数据,在添加前可以不定义每个字段的类型ES可以自动的根据类型定义字段的属性。

添加多个文档

POST http://127.0.0.1:9200/{index}/{type}/_bulk
{"index":{"_id":"1"}}
{"key1":"value1"}
{"index":{"_id":"2"}}
{"key1":"value2"}

_bulk 表示大量id在json里面定义

不同索引下的批量添加

POST http://127.0.0.1:9200/_bulk
{ "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }}
{ "key1": "key2" }
{ "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }}
{ "key1": "key2" }
{ "index": { "_index": "{index}", "_type": "{type}", "_id": "{id}" }}
{ "key1": "key2" }

在添加时index和type必须明确,但是可不指定id的值,如果不指定会自动生成的id有22字符串长度URL-safe, Base64-encoded string universally unique identifiers, 或者叫 UUID。

如果指定的id已经存在就会覆盖原来的json数据。

在添加时指定了id但是又想避免覆盖可以在url上添加_create或者?op_type=create参数  添加的id如果已经存在会返回409状态。

添加成功会返回

{
"_index": "{index}",//索引名
"_type": "{type}",//类型名
"_id": "{id}",//id
"_version": 1,//数据版本号 改变一次默认会加1
"result": "created", // 结果添加
"_shards": {
"total": 2,//在多少个分配中进行了操作
"successful": 1,//成功建立的索引分片数量至少时1
"failed": 0//建立索引失败的片数
},
"created": true //如果是添加为true 修改为false
}

二、文档的修改

上面在添加文档的时候已经说了,在添加的时候如果自定了id如果id已经存在了就会覆盖原来的,这就是最基本的修改。

还有一种修改是通过脚本在原有的数据基础上进行修改。

POST /{index}/{type}/{id}/_update
{
  "script" : "ctx._source.key += 5"
}

ctx._source 表示当前文档。在当前文档的key属性的原有值上在加5。

可以增加新的属性。

每次修改成功会返回一个json格式和上面添加类似,同时_version默认加1

三、文档的删除

删除文档比较简单只要发出的请求是DELETE类型同时指定index,type,id 就可以了

例如:

DELETE /{index}/{type}/{id}/_update

成功返回:

{
"found" : true,
"_index" : {index},
"_type" : {type},
"_id" : {id},
"_version" : 3
}

删除是_version也会加1。

如果文档本身不存在会得到一个 404 的状态。found值为false

在ES内部原来的文档不会被立马删除,只是被标记为被删除,但是已经不能访问了。在后面ES会自己删除。

四、文档的查看

1.直接通过id获取文档

GET /{index}/{type}/{id}?pretty

结果为:

{
"_index" : {index},
"_type" : {type},
"_id" : {id},
"_version" : 3,
"found" : true,
"_source":{
     "key1":"value"
}
}

返回对应inden内type中id的数据pretty标示返回的数据以json格式化 换行输出,方便阅读。

_index 表示查询的索引,_type 标示查询的类型 ,_id 标示查询的id , found标示查询结果,_source 标示查询到的源数据

在查询过程中_type 是可选的 如果不全定可以使用_all。

在查询是可以设置是否返回_source字段,只需要在url后面添加_source=false就可以了,例如:

GET /{index}/{type}/{id}?_source=false&pretty

如果返回_source的字段中只需要返回一个或某几个字段可以在url后面添加_source_include或者_source_exclude来设置

例如:

GET /{index}/{type}/{id}?_source_include=key1,key3,keys11*&pretty

就像上面的连接一样多个可以用逗号隔开,也可以使用通配符*。

在查询时也可以设置值返回源数据,例如:

GET /{index}/{type}/{id}/_source?pretty

2.多文档查询

在一次中查询多个文档,可以分别指定index,type,id来进行多个文档的查询。查询的结果包含查询到的文档数组。

例如

POST /_mget?pretty
{
  "docs":[
            {"_index":"index1","_type":"index1","_id":"1"},
            {"_index":"index2","_type":"index2","_id":"2"}
  ]
}        

返回的结果结构为:

{
     "docs":[
         {

             "_index" : {index},
             "_type" : {type},
             "_id" : {id},
             "_version" : 3,
              "found" : true,
              "_source":{
                      "key1":"values1"
                   }
          },
     {

             "_index" : {index},
             "_type" : {type},
             "_id" : {id},
             "_version" : 3,
              "found" : true,
              "_source":{
                      "key1":"values1"
                   }
          }

  ]
}            

同一个索引或类型下多条件查询   同等于 or 查询

POST /{index}/{type}/_mget?pretty
{
  "docs":[
           {"_id":"1","_source":false},
           {"_id":"2","_source":["key1","key2"]}

  ]
}         
时间: 2024-10-18 14:05:19

ElasticSearch学习之——基本的文档CURD的相关文章

Elasticsearch入门教程(四):Elasticsearch文档CURD

原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/vbirdbest/article/details/79217590 一: 新增文档POST /{index}/{type} 或 PUT /{index}/{type}/{id} 注意:新增文档时可以显式指定id,id可以是数字也可以是字符串,如果不显示指

ElasticSearch(二):文档的基本CRUD与批量操作

ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式. 通过调用POST index_name/_doc,系统会自动生成文档 _id. #create document. 自动生成 _id POST users/_doc { "user" : "Mike", "post_date" : "2

HTML&CSS基础学习笔记4-定义文档类型

定义HTML的文档类型 Web 世界中存在许多不同的文档.只有了解文档的类型,浏览器才能正确地显示文档. HTML 也有多个不同的版本,只有完全明白页面中使用的确切 HTML 版本,浏览器才能完全正确地显示出 HTML 页面.这就是 <!DOCTYPE> 的用处. <!DOCTYPE> 声明不是 HTML 标签,它是指示 web 浏览器关于页面使用哪个 HTML 版本进行编写的指令.是一种标准通用标记语言的文档类型声明,它的目的是要告诉标准通用置标语言解析器,它应该使用什么样的文档

Qt入门学习——Qt 5 帮助文档的使用

Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法. 我们使用 Qt 帮助文档,主要分为这么几步: 1)类使用的相关介绍 2)查看所用部件(类)的相应成员函数(功能,参数,返回值) 3)查看部件的信号 4)查看部件的事件(所对应的虚函数如何编写) 1)类使用的相关介绍 光标移动到类名字的地方,接着按“F1”即可跳

Sharepoint学习笔记—ECM系列—文档列表的Metedata Navigation与Key Filter功能的实现

如果一个文档列表中存放了成百上千的文档,想要快速的找到你想要的还真不是件容易的事,Sharepoint提供了Metedata Navigation与Key Filter功能可以帮助我们快速的过滤和定位我们想要查找的文档. 效果如下: 下面我们来看看如何设置实现这个功能. 1.打开你想要操作的文档库,点击此库的Library选项页及其Library Settings按钮 点击此Ribbon上的Library Setting按钮 2.在文档库的管理页面的Gegeral Settings栏,找到Met

elasticsearch 5.x 系列之六 文档索引,更新,查询,删除流程

一.elasticsearch index 索引流程 步骤: 客户端向Node1 发送索引文档请求 Node1 根据文档ID(_id字段)计算出该文档应该属于shard0,然后请求路由到Node3的P0分片上. Node3在P0上执行了请求.如果请求成功,则将请求并行的路由至Node1,Node2的R0上.当所有的Replicas报告成功后,Node3向请求的Node(Node1)发送成功报告,Node1再报告至Client. 当客户端收到执行成功后,操作已经在Primary shard和所有的

Elasticsearch Java API(九)--删除文档的field以及field的属性

一.需求 项目中需要实现删除文档的一个field以及删除指定field的一个属性. 以文档test/document/1为例: { "_index": "test", "_type": "document", "_id": "1", "_score": 1, "_source": { "class": "com.tes

EXCEL基础内容学习笔记(二)Excel文档的基本组成与功能介绍

一.基本组成 (一)工作簿.工作表与单元格 (1)工作簿:一个Excel文档即为一个工作簿. (2)工作表:工作簿中的每个表. (3)单元格:打开Excel文档,在工作表中单击,出现的加粗四边形即为单元格.单元格由行和列组成,命名时由行和列说明,称为单元格名称或地址. 一个工作簿中有若干个工作表,每个工作表有许多单元格组成. 二.功能介绍 (1)标题栏:Excel文档最上端. (2)选项卡 (3)工作区:每一个打开的选项卡都含有若干工作区. (4)名称框:所选择的单元格的名字. (5)编辑栏:可

HTML学习笔记4:文档申明和编码标签

①文档申明 作用:为了使浏览器更好的显示HTML文件,必须告知浏览器你的文件为HTML 语法:<!DOCTYPE html> 声明必须放在HTML文档第一行 声明不是HTML标签 ②编码标签 若不正确的设置编码类型,当需要显示非浏览器设置的编码类型的字符时,会显示乱码 解决方法: 在<head></head>标签中使用<meta/>标签设置编码类型,<meta charset="utf-8">即可设置编码类型为utf-8. &