前面简介说到 elsatic是通过RestFul API接口操作数据的,可以通过postman模拟接口请求测试一下

一、_cat

1、GET /_cat/nodes:查看所有节点

2、GET /_cat/health:查看 es 健康状况

3、GET /_cat/master:查看主节点

4、GET /_cat/indices:查看所有索引 类似mysql中的show databases;

ElasticSearch入门检索_字段

二、索引一个文档(保存)

保存一个数据,保存在哪个索引的哪个类型下,指定用哪个唯一标识

PUT customer/external/1;在 customer 索引下的 external 类型下保存 1 号数据

ElasticSearch入门检索_elastic_02

PUT 和 POST 都可以新增

POST 新增。如果不指定 id,会自动生成 id。指定 id 就会修改这个数据,并新增版本号

PUT 可以新增可以修改。PUT 必须指定 id;由于 PUT 需要指定 id,我们一般都用来做修改

操作,不指定 id 会报错

三、查询文档


GET customer/external/1


查询返回结果:
{
"_index": "customer", //在哪个索引
"_type": "external", //在哪个类型
"_id": "1", //记录 id
"_version": 2, //版本号
"_seq_no": 1, //并发控制字段,每次更新就会+1,用来做乐观锁
"_primary_term": 1, //同上,主分片重新分配,如重启,就会变化
"found": true,
"_source": { //真正的内容
"name": "John Doe"
}
}
乐观锁更新携带 ?if_seq_no=0&if_primary_term=1,携带的数据要和查询出来的保持一致,要不然会报错

四、更新文档

1、POST customer/external/1/_update
{
"doc":{
"name": "Doew"
}
}

2、POST customer/external/1
{
"name": "Doe2"
}

3、PUT customer/external/1
{
"name": "Doe"
}

ElasticSearch入门检索_elastic_03

以上三种方式都可以进行更新数据

第一种方式POST请求带有_update会进行对比元数据,如果与原来的数据一模一样就什么都不做,version、seq_no字段都不变

第二种和第三种不会对比元数据,会直接修改 version、seq_no等字段也会改变

结论:根据场景,对于大并发更新,不带_update。

对于并发查询但是偶尔更新的带 _update;对比更新,会重新计算分配规则

更新同时增加属性

POST customer/external/1/_update 
{
"doc": {
"name": "Jane Doe",
"age": 20
}
}
PUT 和 POST 不带_update 也可以
注意:POST带_update ,必须带有doc

五、删除文档&索引

删除文档:DELETE customer/external/1
删除索引:DELETE customer
注意:Elastic没有提供删除类型的操作

六、bulk 批量 操作API

这个需要用到Kibana的dev-tools测试批量

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据

1.指定索引的批量操作

POST customer/external/_bulk 
{"index":{"_id":"1"}}
{"name": "XiaoMing" }
{"index":{"_id":"2"}}
{"name": "xiaoHong" }

ElasticSearch入门检索_字段_04

2.不指定索引,对Elastic进行操作

POST /_bulk 
{ "delete": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "create": { "_index": "website", "_type": "blog", "_id": "123" }}
{ "title": "My first blog post" }
{ "index": { "_index": "website", "_type": "blog" }}
{ "title": "My second blog post" }
{ "update": { "_index": "website", "_type": "blog", "_id": "123"} }
{ "doc" : {"title" : "My updated blog post"} }

bulk API 以此按顺序执行所有的 action(动作)。如果一个单个的动作因任何原因而失败,

它将继续处理它后面剩余的动作。当 bulk API 返回时,它将提供每个动作的状态(与发送

的顺序相同),所以您可以检查是否一个指定的动作是不是失败了。

3.样本测试数据

Elastic官方提供了银行测试数据


https://www.elastic.co/guide/en/kibana/6.7/tutorial-load-dataset.html 官方文档地址
https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip 下载文件地址


POST bank/account/_bulk

导入测试数据,下面进行进阶检索