【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 结构化查询方式: 结构化查询是实际工作中最需要的方式。下一篇研究。


知行办公,专业移动办公平台 https://zx.naton.cn/

原创团队
【总监】十二春秋之,3483099@qq.com;
【Master】zelo,616701261@qq.com;【运营】运维艄公,897221533@qq.com;
【产品设计】流浪猫,364994559@qq.com;【体验设计】兜兜,2435632247@qq.com;
【iOS】淘码小工,492395860@qq.com;iMcG33K,imcg33k@gmail.com;
【Android】人猿居士,1059604515@qq.com;思路的顿悟,1217022114@qq.com;
【java】首席工程师MR_W,feixue300@qq.com;【测试】土镜问道,847071279@qq.com
【数据】fox009521,42151960@qq.com;【安全】保密,你懂的。

原创粉丝点击