- ES 采用 JSON 形式的 RESTFUL API 接受数据并响应,操作起来极为简单,只需要使用 PostMan 即可
- 我这里使用的不是 PostMan 你们随意只要可以发送 HTTP 请求即可
查看集群的健康情况
GET /_cat/health?v
- cluster:集群名称
- status:集群状态
green
代表健康
yellow
代表分配了所有主分片,但至少缺少一个副本,此时集群数据仍旧完整
red
代表部分主分片不可用,可能已经丢失数据
- node.total:代表在线的节点总数量
- node.data:代表在线的数据节点的数量
- shards,active_shards:存活的分片数量
- pri,active_primary_shards:存活的主分片数量,正常情况下,shards 的数量是 pri 的两倍
- relo,relocating_shards:迁移中的分片数量,正常情况为 0
- init,initializing_shards:初始化中的分片数量,正常情况为 0
- unassign,unassigned_shards:未分配的分片,正常情况为 0
- pending_tasks:准备中的任务,任务指迁移分片等,正常情况为 0
- max_task_wait_time:任务最长等待时间
- active_shards_percent:正常分片百分比,正常情况为 100%
索引操作
查看集群中的索引
GET /_cat/indices?v
创建索引
- 语法如下:
- 这里
pretty
的作用是格式化返回的 JSON
串,可以不加
PUT /索引名称
PUT /索引名称?pretty
PUT /my_index?pretty
删除索引
DELETE /索引名称?pretty
CRUD
新增
PUT /index/type/id
PUT article/_doc/1
{
"title":"Java从入门到精通",
"red":101,
"content":"Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程"
}
PUT article/_doc/2
{
"title":"JavaEE从入门到入土",
"red":50,
"content":"Java EE 是 J2EE的一个新的名称,之所以改名,目的还是让大家清楚J2EE只是Java企业应用。在2004年底中国软件技术大会Ioc微容器(也就是Jdon框架的实现原理)演讲中指出:我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本"
}
PUT article/_doc/3
{
"title":"PHP从入门到精通",
"red":50,
"content":"众所周知,PHP是世界上最好的语言"
}
查询
GET /index/type/id
_index
:该文档属于哪个索引
_type
:相当于表 ES一直在弱化 type,现在的 type 实际上都是 _doc,ES9 之后将彻底删除 type
_id
:文档的唯一标识,相当于主键,可以手动生成,也可以自动
_seq_no
:递增的序列号,保证每次操作都比前一次大
_version
:版本号,表示该数据被修改了多少次
found
:是否被查询到
_primary_term
:当分片重新选举时,+ 1
_source
:查询到的数据
替换
- 所谓替换文档,就是将整个文档的内容全部替换成新内容
- 替换操作不需要字段对应上,因为是完全替换的
- 语法如下:
PUT /index/type/id
{
"title":"PHP从入门到跑路"
}
- 替换之后的结果如下:
- 你会发现只有指定了值的字段还有值其他的都没值了
修改
- 所谓修改文档,就是修改文档中的某个字段
- 语法如下:
POST /index/type/id/_update
- update 操作不能直接指定字段,而是需要在外面包一层
doc
{
"doc":{
"name":"PHP从入门到跑路2"
}
}
删除
DELETE /index/type/1