elasticsearch中文文档精解一_基础_索引与文档,es类比mysql的记忆方法

前记

这一系列elasticsearch都是基于官方文档的一些联系和总结,在博客里我把它放在PHP分类,因为这种服务小工具应该也属于PHP周边吧

介绍

因为英文不是很好我比较喜欢叫elasticsearch为es,它的使用领域可以说相当广泛了,小到我这种博客的搜索大到分布式数据计算。现在这个项目准备用它实现一套颜色相关的查询功能,它是Java写的ELK分析系统中的一环,并且它有一套RESTFUL API的对外接口。


集群健康

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
curl -X GET "localhost:9200/_cluster/health"

返回

{
"cluster_name": "elasticsearch",
"status": "yellow",
"timed_out": false,
"number_of_nodes": 1,
"number_of_data_nodes": 1,
"active_primary_shards": 10,
"active_shards": 10,
"relocating_shards": 0,
"initializing_shards": 0,
"unassigned_shards": 10,
"delayed_unassigned_shards": 0,
"number_of_pending_tasks": 0,
"number_of_in_flight_fetch": 0,
"task_max_waiting_in_queue_millis": 0,
"active_shards_percent_as_number": 50
}

这里推荐使用一个小工具postman

最重要的是status,它有如下3种颜色

颜色 状态
green 所有主副分片都运行正常
yellow 所有主分片正常,但不是所有副分片也正常
red 有主分片没有正常运行

索引

类比数据库es里的索引应该叫库,默认分配5个主分片。但是也可以手动配置

1
2
3
4
5
6
7
curl -X PUT "localhost:9200/blogs" -H 'Content-Type: application/json' -d
'{
"settings" : {
"number_of_shards" : 3,
"number_of_replicas" : 1
}
}'

es索引建立

单机版索引

上图可以看见默认es分配了5个主分区与5个副本分区,健康状况为yellow,因为我们这里使用的是单机版的配置,不会创建副分区。因为同在一台服务器上主分区GG了就意味着数据的丢失

索引文档

类比数据库,文档相当于数据库中的数据。里面有三个必须的元数据元素,_index,_type,_id

名称 用途
_index 等同有mysql中的概念,把有共同特性的数据放到相同集合
_type 等同有mysql中的概念
_id 与_index和_type组成了文档里数据的唯一标识

索引自定义ID的文档

1
2
3
4
5
6
7
8
9
curl -X PUT "localhost:9200/phpzjj/article/1" -H 'Content-Type: application/json' -d'
{
"title": "es文档写入",
"text": "演示下文档是怎么写入的",
"date": "2018/11/19"
}
'


localhost: 9200 /phpzjj/ article/ 1
域名 端口 _index _type _id

索引自定义ID的文档

索引系统分配ID文档

和上面不同的是这里采用 POST ,在RESTFUL API里PUT表示更新POST表示创建,这里可以理解为自定义ID是先写入成功数据后更改了ID的值

1
2
3
4
5
6
7
8
curl -X POST "localhost:9200/phpzjj/article" -H 'Content-Type: application/json' -d'
{
"title": "es文档写入",
"text": "演示下文档是怎么写入的",
"date": "2018/11/19"
}
'

执行结果

文档写入情况1
文档写入情况2

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

请我喝杯咖啡吧~