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":""}}
{"key1":"value1"}
{"index":{"_id":""}}
{"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
"result": "created", // 结果添加
"_shards": {
"total": ,//在多少个分配中进行了操作
"successful": ,//成功建立的索引分片数量至少时1
"failed": //建立索引失败的片数
},
"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" :
}
删除是_version也会加1。
如果文档本身不存在会得到一个 404 的状态。found值为false
在ES内部原来的文档不会被立马删除,只是被标记为被删除,但是已经不能访问了。在后面ES会自己删除。
四、文档的查看
1.直接通过id获取文档
GET /{index}/{type}/{id}?pretty
结果为:
{
"_index" : {index},
"_type" : {type},
"_id" : {id},
"_version" : ,
"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":""},
{"_index":"index2","_type":"index2","_id":""}
]
}
返回的结果结构为:
{
"docs":[
{
"_index" : {index},
"_type" : {type},
"_id" : {id},
"_version" : ,
"found" : true,
"_source":{
"key1":"values1"
}
},
{
"_index" : {index},
"_type" : {type},
"_id" : {id},
"_version" : ,
"found" : true,
"_source":{
"key1":"values1"
}
}
]
}
同一个索引或类型下多条件查询 同等于 or 查询
POST /{index}/{type}/_mget?pretty
{
"docs":[
{"_id":"","_source":false},
{"_id":"","_source":["key1","key2"]}
]
}
3.没有任何条件的查询
GET /{index}/{type}/_search
没有任何条件的查询某个index下type中的文档,结果默认会展示出前20条文档
也可以在查询时添加条件,假设文档中有一个name字段需要查找出name为张三的文档
GET /{index}/{type}/_search?q=name:张三
如果查询的条件比较复杂就需要使用结构化查询语句(DSL)了。
转载请注明来自:http://www.cnblogs.com/phpshen/p/7887439.html
ElasticSearch学习之——基本的文档CURD的更多相关文章
- ElasticSearch 学习记录之 分布式文档存储往ES中存数据和取数据的原理
分布式文档存储 ES分布式特性 屏蔽了分布式系统的复杂性 集群内的原理 垂直扩容和水平扩容 真正的扩容能力是来自于水平扩容–为集群添加更多的节点,并且将负载压力和稳定性分散到这些节点中 ES集群特点 ...
- Elasticsearch学习系列之多文档操作mget
测试数据 GET /library/books/1 { "_index": "library", "_type": "books& ...
- Elasticsearch入门教程(四):Elasticsearch文档CURD
原文:Elasticsearch入门教程(四):Elasticsearch文档CURD 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接: ...
- Elasticsearch配置详解、文档元数据
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch配置文件详解 a. 在上面博客中,我们已经安装并且成功 ...
- ElasticSearch(二):文档的基本CRUD与批量操作
ElasticSearch(二):文档的基本CRUD与批量操作 学习课程链接<Elasticsearch核心技术与实战> Create 文档 支持自动生成文档_id和指定文档_id两种方式 ...
- Elasticsearch中最重要的文档CRUD要牢记
Elasticsearch文档CRUD要牢记 转载参考:https://juejin.im/post/5ddbf298e51d4523053c42e7 在Elasticsearch中,文档(docum ...
- Qt入门学习——Qt 5 帮助文档的使用
Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必 ...
- Javascript学习8 - 脚本化文档(Document对象)
原文:Javascript学习8 - 脚本化文档(Document对象) 每个Web浏览器窗口(或帧)显示一个HTML文档,表示这个窗口的Window对象有一个document属性,它引用了一个Doc ...
- webservice学习01:wsdl文档结构
webservice学习01:wsdl文档结构 wsdl文档结构 WSDL文档示例 <wsdl:definitions xmlns:xsd="http://www.w3.org/200 ...
随机推荐
- ReadWriteLock
ReadWriteLock也是一个接口,只有两个方法 一个用来获取读锁,一个用来获取写锁.也就是说将文件的读写操作分开,分成2个锁来分配给线程,从而使得多个线程可以同时进行读操作.下面的Reentra ...
- Django基础必备三神装(HttpResponse、render,、redirect)
在使用三神装的时候,首先当然是得要导入它们: from django.shortcuts import HttpResponse, render, redirect 1.HttpResponse 它是 ...
- 【 js 片段 】点击空白或者页面其他地方,关闭弹框
$(document).mouseup(function(e){ var _con = $(' 目标区域 '); // 设置目标区域 if(!_con.is(e.target) && ...
- Unity3D 场景切换加载进度条实现
需要三个场景,场景A,场景B,场景C: 场景A:一个按钮,点击加载场景B: 场景B:从A切换到C过度场景,加载进度条: 场景C:目标场景: 创建OnProgress.cs脚本: using Syste ...
- 【代码笔记】iOS-自定义选择框
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "CYCustomMultiSe ...
- ArcGIS Google Map 增加虚拟图层(MapImageLayer)(转载)
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="ht ...
- Oracle DUL/AUL/ODU 工具说明
转自 http://blog.csdn.net/launch_225/article/details/7523195 假设我们的数据库遇到以下情况: 第一, 没有备份; 第二, 常规方法无法恢复; 第 ...
- ES6高频面试题目整理
本篇文章是根据以下内容进行的总结 1.https://segmentfault.com/a/1190000011344301 2.http://www.bslxx.com/a/mianshiti/ti ...
- 0 Linux下Java使用ProcessBuilder执行命令与直接Bash执行命令之间的不同(环境变量方面)
0 问题发生 xiaojietest.java package tasks; import java.io.BufferedReader; import java.io.BufferedWriter; ...
- Typescript 基础知识
Typescript 就是 Javascript 的超集,所以首先你要知道 Javascript 基础知识 类型注解 类型注解在TypeScript中是记录函数或变量约束的简便方法. // 布尔值 l ...