ElasticSearch5.X 增删改查
来源:互联网 发布:catia软件好学吗 编辑:程序博客网 时间:2024/05/17 03:47
ES支持近实时的索引、更新、查询、删除文档,近实时就意味着刚刚索引的数据需要1秒钟后才能搜索到,这也是与传统的SQL数据库不同的地方。
索引/替换文档
之前已经试过如何索引一个文档了,这里再复习一下:
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{ "name": "John Doe"}'
上面的例子中,创建了一个索引为customer,类型为external,id为1的文档。
当再次执行命令:
curl -XPUT 'localhost:9200/customer/external/1?pretty' -d '{ "name": "Jane Doe"}'
之前的第一个文档就被覆盖掉了。
如果指定新的文档id,那么旧的文档仍然存在:
curl -XPUT 'localhost:9200/customer/external/2?pretty' -d '{ "name": "Jane Doe"}'
索引的时候ID是可选的,如果不指定ID,ES会随机生成一个ID,并使用这个ID索引文档数据。
curl -XPOST 'localhost:9200/customer/external?pretty' -d '{ "name": "Jane Doe"}'
需要注意的是,如果不指定ID,那么需要使用POST命令,而不是PUT。
更新文档
除了索引和替换文档,ES还支持更新文档。更新文档其实是先删除旧的文档,再索引新的文档。
如果想要更新文档内容,可以按照下面的方式进行:
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '{ "doc": { "name": "Jane Doe" }}'
由于是先删除再索引,因此可以额外增加新的字段:
curl -XPOST 'localhost:9200/customer/external/1/_update?pretty' -d '{ "doc": { "name": "Jane Doe", "age": 20 }}'
当然也支持使用脚本进行更新:
curl -XPOS
T 'localhost:9200/customer/external/1/_update?pretty' -d '{ "script" : "ctx._source.age += 5"}'
其中ctx._source代表了当前的文档,上面的意思 是 在当前文档的基础上age加5.
删除文档
删除文档就很简单了,只需要指定文档的索引、类型、ID就行了:
curl -XDELETE 'localhost:9200/customer/external/2?pretty'
搜索
curl -XGET 'localhost:9200/customer/external/_search' -d '{ "query": {
"match": {
"name":"wang"
}
}}'
执行搜索
GET查询
Get API允许基于ID字段从Elasticsearch查询JSON文档,下面就是一个查询的例子:
curl -XGET 'http://localhost:9200/twitter/tweet/1'
上面的命令表示,在twitter索引的tweet类型中查询id为1的文档,返回结果如下:
{ "_index" : "twitter", "_type" : "tweet", "_id" : "1", "_version" : 1, "found": true, "_source" : { "user" : "kimchy", "postDate" : "2009-11-15T14:12:12", "message" : "trying out Elasticsearch" }}
上面返回的数据包括文档的基本内容,_index
是索引名称,_type
是类型,_id
是ID,_version
是版本号。_source
字段包括了文档的基本内容;found
字段代表是否找到。
这个API支持使用HEAD方式提交,这样可以验证这个ID是否存在,而不会返回无用的数据。
curl -XHEAD -i 'http://localhost:9200/twitter/tweet/1'
批量操作
除了索引、替换、更新和删除,ES为了减少来回的响应信息,可以一次性执行多个命令,最后统一返回执行结果。
例如:
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '{"index":{"_id":"1"}}{"name": "John Doe" }{"index":{"_id":"2"}}{"name": "Jane Doe" }'
上面的命令可以同时插入两条数据。
_bulk命令不仅仅支持单个命令执行多条,还只是多种不同的命令执行多条。
curl -XPOST 'localhost:9200/customer/external/_bulk?pretty' -d '{"update":{"_id":"1"}}{"doc": { "name": "John Doe becomes Jane Doe" } }{"delete":{"_id":"2"}}'
上面的命令中,先更新id为1的文档,再删除id为2的文档。
如果bulk中的某一个命令执行出错,那么会继续执行后面的命令,最后在命令返回时,会返回每个命令的执行结果。
- ElasticSearch5.X 增删改查
- ElasticSearch5.4 基本增删查改、搜索模板类
- MongoDB 3.X Crud 增删查改
- ElasticSearch5.6.1索引、类型、文档的增删查改--利用RESTful接口和Kibana可视化工具
- hbase 1.x 增删改查,建表、删表等
- angular1.x 实现表格的增删改查
- hibernate增删查改
- XML 增删查改
- ldap 增删改查
- mysql增删改查
- 动态增删改查
- jdom增删改查
- 集合增删查改
- XML 增删改查
- xml增删改查
- lucene增删改查
- 增删改查
- ldap增删改查
- 一列数的规则如下:1、1、2、3、5、8、13、21、34…… 求第30位数是多少,用递归算法实现。
- Android Studio 下的Kotlin HelloWorld
- 关于ajax跨域访问,Access-Control-Allow-Origin 404的简单解决办法
- TextView跑马灯效果
- 综合练习:路由+过滤器+服务+指令
- ElasticSearch5.X 增删改查
- 记账本
- ionic下拉刷新
- c++ map使用(增删查改遍历)
- MySQL主从复制的常用拓扑结构
- 【转载】Linux-SIPp3.3测试FreeSwitch-(六)注意事项
- 中国颁布本地数据存储法律引来各大企业的恐慌
- easyui 日期框,结束时间大于开始时间
- sizeof与strlen的区别