一、文档的添加

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

最新文章

  1. Css Sprites 多张图片整合在一张图片上
  2. Copy List with Random Pointer
  3. Using the viewport meta tag to control layout on mobile browsers
  4. 【转载】从 LinkedIn 的数据处理机制学习数据架构
  5. Unity3D 游戏开发构架篇 ——输入控制
  6. Linux笔记③(ftp、nfs、ssh服务器搭建)
  7. (转载,但不知道谁原创)获取SPRING 代理对象的真实实例,可以反射私有方法,便于测试
  8. 关于CocoaPods的ruby镜像文件问题
  9. HTML元素解释
  10. WINDOWS7环境下Informatica的安装[新手]
  11. xml模块学习
  12. Genymotion模拟器出现INSTALL_FAILED_NO_MATCHING_ABIS 的解决办法
  13. Windows Phone 8 开发必备资源
  14. Win10系列:VC++ XML文件解析
  15. Python新建/删除文件夹
  16. easyui常用属性
  17. 基础概念——何为GNU与GCC
  18. 新装linux系统最基本设置
  19. MFC绘制棋盘格
  20. NFS网络文件系统详解

热门文章

  1. VisualVM监控远程阿里云主机
  2. Jprofiler注册码
  3. CassiniDev源码学习 - 可替代IIS的单机Web Form解决方案
  4. html-使用表单标签实现注册页面
  5. 浏览器根对象navigator之对象属性概览
  6. map与pagelayout同步新方法
  7. button的OnClickListener的三种实现方法
  8. MongoDB用户配置
  9. python中的字符串编码问题——3.各操作系统下的不同编码方式
  10. Docker 网络基础介绍