【ElasticSearch】3.elasticsearch增删改查基本操作
来源:互联网 发布:华为双卡切换网络数据 编辑:程序博客网 时间:2024/06/05 04:42
1.插件Marvel安装
2.插件Sense安装
3.下载curl并安装
4.kibana安装
5.与Elasticsearch交互
Elasticsearch为Java用户提供了两种内置客户端:
节点客户端: 节点客户端以一个 无数据节点 的身份加入了一个集群。换句话说,它自身是没有任何数据的,但是他知道什么数据在集群中的哪一个节点上,然后就可以请求转发到正确的节点上并进行连接。
传输客户端: 更加轻量的传输客户端可以被用来向远程集群发送请求。他并不加入集群本身,而是把请求转发到集群中的节点。 这两个客户端都使用 Elasticsearch 的 传输 协议,通过9300端口与 java 客户端进行通信。集群中的各个节点也是通过9300端口进行通信。如果这个端口被禁止了,那么你的节点们将不能组成一个集群。
请注意Elasticsearch为几种语言(Groovy、JavaScript、.NET、PHP、Perl、Python和ruby)提供了官方客户端,有许多社区提供版本的客户端和集成环境,所有这些都可以在Elasticsearch Clients中看见。
6.数据特性
Elasticsearch是面向文档的,存储数据是用JSON进行保存,以文档的方式进行索引。
7.添加修改数据操作:
存储数据的行为在Elasticsearch叫做索引,但索引文件之前,我们需要决定在哪里存储它。
一个Elasticsearch集群可以包含多个指标(索引),进而包含多个类型。这些类型保存多个文档,每个文档都有多个字段。
默认情况下,文档中的每个索引字段(有一个反向索引),因此是可搜索的。没有反向索引的字段是不能搜索。Elasticsearch 和 Lucene 为了提供数据检索能力,均采取反向索引的方式。
样例:通过postman工具进行添加数据。 采用put方式调用http://localhost:9200/megacorp/employee/1 参数:
{ "first_name" : "John", "last_name" : "Smith", "age" : 25, "about" : "I love to go rock climbing", "interests": [ "sports", "music" ]}
返回结果:
{ "_index": "megacorp", "_type": "employee", "_id": "1", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1}
这个请求体是JSON文档,包含对该员工的所有信息。他的名字是约翰·史密斯,他25岁,喜欢攀岩。 值得注意的是,路径/megacorp/employee/1包含三个信息:megacorp 是索引,employee是类型,1 是员工的ID
在添加2条数据到这个位置。
{ "first_name" : "song", "last_name" : "Smith", "age" : 27, "about" : "I love to go rock climbing", "interests": [ "sports", "music" , "run"]}{ "first_name" : "song", "last_name" : "hello", "age" : 29, "about" : "I love to go rock climbing", "interests": [ "sports", "sports", "sports"]}
当然,如果你添加一条数据id重复,上一次添加的数据就会被更新。
添加后的效果可以通过elasticsearch-head 看到,如图所示:
还有一点需要注意的是,创建操作可以使用PUT,也可以使用POST。区别在于POST是作用在一个集合资源之上的(/articles),而PUT操作是作用在一个具体资源之上的(/articles/123),比如说很多资源使用数据库自增主键作为标识信息,而创建的资源的标识信息到底是什么只能由服务端提供,这个时候就必须使用POST。 POST方式是自增id,PUT是必须要跟上id。
post方式插入数据:访问http://localhost:9200/megacorp/employee
body:
{ "first_name" : "song", "last_name" : "S", "age" : 27, "about" : "I love to go rock climbing", "interests": [ "music" ]}
返回结果:
{ "_index": "megacorp", "_type": "employee", "_id": "V6H47F8B1upE33fnKtXT", "_version": 1, "result": "created", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 0, "_primary_term": 1}
8.删除操作
8.1删除一个文档
采用delete方式 访问:http://localhost:9200/megacorp/employee/1 返回参数:
{ "_index": "megacorp", "_type": "employee", "_id": "1", "_version": 2, "result": "deleted", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1}
到库中看一下,发现id=1的数据已经被删除了。
8.2删除一个索引下面所有内容: delete 方式 访问:http://localhost:9200/schools
返回;
{ "acknowledged": true}
9.检索一个文档操作
9.1简易版的查询方式:
采用get方式拿数据:http://localhost:9200/megacorp/employee/3
返回结果:
{ "_index": "megacorp", "_type": "employee", "_id": "3", "_version": 1, "found": true, "_source": { "first_name": "song", "last_name": "hello", "age": 29, "about": "I love to go rock climbing", "interests": [ "sports", "sports", "sports" ] }}
访问不存在的数据:http://localhost:9200/megacorp/employee/4
{ "_index": "megacorp", "_type": "employee", "_id": "4", "found": false}
在客户端看来 found 字段可以作为是否拿到数据的参考值。
查询所有:http://localhost:9200/megacorp/employee/_search 返回结果:
{ "took": 1, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "megacorp", "_type": "employee", "_id": "V6H47F8B1upE33fnKtXT", "_score": 1, "_source": { "first_name": "song", "last_name": "S", "age": 27, "about": "I love to go rock climbing", "interests": [ "music" ] } }, { "_index": "megacorp", "_type": "employee", "_id": "2", "_score": 1, "_source": { "first_name": "wang", "last_name": "Smith", "age": 29, "about": "I love to go rock climbing", "interests": [ "sports" ] } }, { "_index": "megacorp", "_type": "employee", "_id": "3", "_score": 1, "_source": { "first_name": "song", "last_name": "hello", "age": 29, "about": "I love to go rock climbing", "interests": [ "sports", "sports", "sports" ] } } ] }}
9.2 结构化查询方式: 结构化查询是实际工作中最需要的方式。下一篇研究。
- 【ElasticSearch】3.elasticsearch增删改查基本操作
- Elasticsearch增删改查
- ElasticSearch 增删改查
- elasticsearch增删改查
- ElasticSearch Java 增删改查
- ElasticSearch的增删改查
- Elasticsearch 5.2 增删改查
- java操作ElasticSearch(es)进行增删查改操作
- JAVA API调用elasticsearch实现基本增删改查
- Elasticsearch 单模式下API的增删改查操作
- ElasticSearch入门-增删改查(CRUD)
- ElasticSearch入门-增删改查(java api)
- elasticsearch java 增删改查 版本1
- elasticsearch java 增删改查 版本2
- ElasticSearch的增删改查API介绍
- ElasticSearch(三):增删改查
- ElasticSearch入门-增删改查(CRUD)
- elasticsearch 增删改查(CRUD)
- [Leetcode] 472. Concatenated Words 解题报告
- java调用C++的dll遇到问题
- QT 为可执行程序添加图标ico
- 浅析各类排序算法(一) 总述
- angularjs中slelect默认选项
- 【ElasticSearch】3.elasticsearch增删改查基本操作
- 初学CNN from Hung-yi Lee 's ML
- 利用tensorflow训练自己的图片数据(5)——测试训练网络
- bzoj3211花神游历各国 线段树
- Windwos、Linux(CentOS)、以及MacOS命令
- git ssh协议支持
- linux nmon 安装使用 监控linux
- angular2拦截器服务
- 浅谈消息队列