前面简介说到 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;



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

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

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



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"
}

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

第一种方式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" }

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://github.com/elastic/elasticsearch/tree/master/docs/src/test/resources

POST bank/account/_bulk

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

最新文章

  1. Silverlight 使用DataContractJsonSerializer序列化与反序列化 Json
  2. Linux svn的搭建与使用
  3. MySQL高级查询语句
  4. PHP读取excel文档
  5. python迭代器与iter()函数实例教程
  6. matplotlib 中文问题
  7. 初探中间件(middleware)
  8. Hibernate介绍和入门案例
  9. PAT 1002. A+B for Polynomials (25) 简单模拟
  10. 关于OpenAuth.Net被攻击的感想
  11. 设计模式基础:类及类关系的UML表示
  12. Python 基于Python结合pykafka实现kafka生产及消费速率&主题分区偏移实时监控
  13. [SQL]LeetCode596. 超过5名学生的课 | Classes More Than 5 Students
  14. Ubuntu 16.04安装httpd
  15. Libre 6003 「网络流 24 题」魔术球 (网络流,最大流)
  16. ZooKeeper安装,部署
  17. Maven 常见问题
  18. python标准库介绍——19 mmap 模块详解
  19. Codeforces Round #500 (Div. 2) D - Chemical table
  20. 第153天:关于HTML标签嵌套的问题详解

热门文章

  1. 高性能的Redis之对象底层实现原理详解
  2. CosId 1.1.0 发布,通用、灵活、高性能的分布式 ID 生成器
  3. kubelet之volume manager源码分析
  4. python画图库及函数,绘制图片从文件提取出来的数据集转化为int,不然作为坐标轴的时候因为是字符串而无法排序
  5. excel VBA中Xldown和xlup用法
  6. Docker 镜像针对不同语言的精简策略
  7. 11、ssh自动化脚本编写
  8. linux之软连接 硬链接 link ln
  9. 记两道最近做的pwn题(ciscn_2019)
  10. Linux | 系统状态检测