ElasticSearch实战 (二)CRUD以及bulk批量操作 api
来源:互联网 发布:java编程思想pdf 编辑:程序博客网 时间:2024/06/07 10:07
生活中把事情做好,做好事情态度和思想认识很重要,生活就变得舒适,也会达到自己的目标。
在对学习es api如何使用之前,我们可以先想一下es使用的数据传输协议和格式是怎样的,为什么会选择这样的协议和格式?还有就是它的数据存储是什么方式为什么比其它搜索方式快呢?
个人理解感觉es使用restful json 格式来传输数据,首先是es定位比较高,可以搜索网上一切东西包括视频、图片、文字等 因为restful 本意就是面向资源 ,互联网上的每个内容都可以称作资源,json数据格式是目前传输性能很高的格式,可以作为首选。
es存储数据核心是应用倒排索引的方式,相反有倒就有正,例如有很多文章我们要搜索一个关键字,可能一篇文章中有多个也可能出现在多篇文章中,需要扫描全部文章并且每一篇文章全部扫描这将是很大的耗时操作,而es采用倒排索引即将关键字与文章建立索引关系,如在文章中的位置、次数等,如果想查找一个关键字最快复杂度为1就可以找到,之前的全部文章全部字数扫描复杂度差了很多倍,所以es的关键字搜索是很快的,官网的定义是这样的:
ElasticSearch是一个分布式、Restful 的搜索和分析引擎能够解决越来越多的案例。
知道了它的数据结构之后,我们可以用它来实现了一些实例了,如下:
上一篇中给大家介绍了head、bigDesk插件,这里再介绍一个插件marvel ,这个插件功能更强大我们主要用它里面的提交json请求的小工具,方便我们操作事例。
elasticsearch的crud操作
下面访问地址的域名+端口都已经省略,为了方便。#创建索引并初始化PUT http://localhost:9200/library/{ "settings": { "index": { "number_of_shards":5, "number_of_replicas":1 } }}#新建一个书籍类型的文档ID 1PUT /library/books/1{ "title":"ElasticSearch", "name":{ "first":"Li", "last":"Longsheng" }, "publish_dae":"2016-12-13", "price":"33.33" }#id也可以自动生成POST /library/books/{ "title":"ElasticSearch", "name":{ "first":"Li", "last":"Longsheng" }, "publish_dae":"2016-12-13", "price":"33.33" }#通过ID获取文档信息,如刚才新建的ID为1的文档GET /library/books/1返回结果:{ "_index": "library", "_type": "books", "_id": "1", "_version": 3, "found": true, "_source": { "title": "ElasticSearch", "name": { "first": "Li", "last": "Longsheng" }, "publish_dae": "2016-12-13", "price": "33.33" }}有时候我们仅仅想选择某一个或者多个字段而不是全部,像SQL语句一样,假如我们只想要title字段内容,可以这样写#通过source获取指定字段GET /library/books/1?_source=title{ "_index": "library", "_type": "books", "_id": "1", "_version": 3, "found": true, "_source": { "title": "ElasticSearch" }}如果想要返回多个字段可以用逗号隔开,同样更新操作也类似,如POST library/books/1?_update{ "title":"new title"}该命令可以将文档1的title更新为new title。最后是删除命令如#删除index type docDELETE library/books/1
mget批量获取文档GET /_mget{ "docs":[ { "_index":"library", "_type":"books", "_id":1 },{ "_index":"frunt", "_type":"food", "_id":1, "_source":["title"] } ]}上面同时查询了library库也查获了frunt库,同时还可以显示指定字段。
elasticsearch 批量处理数据在实际项目应用中还是批量操作会常用一些,接下来我们就看一下批量如何操作,先来看一下批量操作的语法结构,可以简单概括为:{"请求行为":{基本元素}}/n{"name":"lilongsheng",即请求体},如我们批量建一些文档#批量创建文档POST /library/books/_bulk{"index":{"_id":"10"}}{"title":"ten title10","price":"1.10"}{"index":{"_id":"11"}}{"title":"ten title11","price":"1.11"}{"index":{"_id":"12"}}{"title":"ten title12","price":"1.12"}{"index":{"_id":"13"}}{"title":"ten title13","price":"1.13"}{"index":{"_id":"14"}}{"title":"ten title14","price":"1.14"}{"index":{"_id":"15"}}{"title":"ten title15","price":"1.15"}通过_mget批量获取结果,说明已经建好{ "docs": [ { "_index": "library", "_type": "books", "_id": "10", "found": false }, { "_index": "library", "_type": "books", "_id": "11", "_version": 1, "found": true, "_source": { "title": "ten title11", "price": "1.11" } }, { "_index": "library", "_type": "books", "_id": "12", "_version": 1, "found": true, "_source": { "title": "ten title12", "price": "1.12" } },……………………bulk还可以同时执行新建修改和更新,如下#可以同时批量增删改操作POST /library/books/_bulk{"delete":{"_index":"library","_type":"books","_id":"10"}}{"create":{"_index":"music","_type":"classic","_id":"1"}}{"title":"bule music"}{"index":{"_index":"music","_type":"classic"}}{"title":"auto generate id"}{"update":{"_index":"library","_type":"books","_id":"13"}{ "doc" : {"price":"111"} }
通过上面的操作实例我们可以实现对es数据结构的增删改查,也初步认识了es是如何来处理数据的,网上面的其它文章也大同小异,原理和性能需要在学习和使用中不断完善和调优,在系统中使用还需要结合具体业务场景来解决具体问题,灵活使用为业务和系统提供实时的查询体验和数据分析等,是我们最终的应用目标。
es操作api总结最近一段时间没有学习内容,以后每月都写几篇博客,来记录一下当作个总结。做技术的时间一长就会迷茫,多多积累,学会生活。
0 0
- ElasticSearch实战 (二)CRUD以及bulk批量操作 api
- elasticSearch批量操作bulk
- 分布式搜索引擎elasticsearch PHP API index bulk 批量插入操作
- Elasticsearch java api(五) Bulk批量索引
- Elasticsearch java api(五) Bulk批量索引
- Elasticsearch java api(五) Bulk批量索引
- Elasticsearch java api中Bulk批量索引
- Elasticsearch java api(五) Bulk批量索引
- php使用Elasticsearch之批量操作(bulk)
- ELK研究(一):elasticsearch java api接口操作ES集群 ---TransportClient的使用介绍 bulk批量提交数据
- ELK研究(一):elasticsearch java api接口操作ES集群 ---TransportClient的使用介绍 bulk批量提交数据
- elasticsearch api中的Bulk API操作
- Elasticsearch Java-API CRUD Java操作Elasticsearch
- Elasticsearch Java API 的使用(9)—Bulk大数据量的批量上传
- [ElasticSearch]使用 java API 进行CRUD操作
- elasticsearch bulk操作
- Bulk API-批量执行
- elasticsearch之批量提交Bulk
- sql语句基本操作
- 读《从Paxos到Zookeeper 分布式一致性原理与实践》笔记之Zookeeper介绍
- 中央帝国精神之神:思规规思律想之轨迹:道思德律:律人:人治:律法:公法天下。
- AndroidStudio 将项目托管到github上
- 知识库--Realm实现(52)
- ElasticSearch实战 (二)CRUD以及bulk批量操作 api
- MySQL的表分区详解示例
- 采用ClassPathXmlApplicationContext,加载Spring的配置文件
- 传智播客关于线程通讯的讲解
- C语言编程错误及分析记录
- 如何快速的提升自己的技能
- pull解析之简单案例
- ognl语言
- C++从零实现深度神经网络之五——模型的保存和加载以及画出实时输出曲线