es搜索核心与实战 Day01
文档
Elasticsearch 是面向文档的,文档是所有可搜索数据的最小单位
- 日志文件中的日志项
- 一本电影的具体信息 / 一张唱片的详细信息
- MP3播放器里的一首歌 / 一篇PDF文档中的具体内容
文档会被序列化成JSON格式,保存在Elasticsearch中
-
JSON对象由字段组成,
-
每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)
每个文档都有一个 Unique ID
- 你可以自己指定 ID
- 或者通过Elasticsearch自动生成
文档的元数据
元数据,用于标注文档的相关信息
-
_index -文档所属的索引名
-
_type -文档所属的类型名
-
_ id-文档唯一ld
-
_ source:文档的原始Json数据.
-
_ all: 整合所有字段内容到该字段,已被废除
-
_version: 文档的版本信息
-
_ score: 相关性打分
索引
Index -索引是文档的容器,是一类文档的结合
Index体现了逻辑空间的概念:每个索引都有自己的Mapping定义,用于定义包含的文档的字段名和字段类型
Shard体现了物理空间的概念:索引中的数据分散在Shard上
索引的 Mapping与Settings
Mapping定义文档字段的类型Setting定义不同的数据分布
Master- eligible nodes和Master Node
每个节点启动后,默认就是一个Master eligible 节点
可以设置 node.master: false 禁止
Master- -eligible节 点可以参加选主流程,成为Master节点
当第一个节点启动时候,它会将自己选举成Master节点
每个节点上都保存了集群的状态,只有Master 节点才能修改集群的状态信息
集群状态 (Cluster State), 维护了一个集群中,必要的信息
文档
create一个文档
- 支持自动生成文档Id和指定文档ld两种方式
- 通过调用“post /users/_ _doc’系统会自动生成document Id
- 使用HTTP PUT user/_ create/1 创建时,URI中显示指定_ _create, 此时如果该id的文档已经存在,操作失败
PUT users/_create/1
{
"firstName": "Jack",
"lastName": "Johnson",
"tags":["guitar","skateboard"]
}
get一个文档
-
找到文档, 返回HTTP 200
-
同一个ld的文档,即使被删除,Version号也会不断增加
_souece 中默认包含了文档的所有原始信息
GET users/_doc/1
index文档
Index和Create不一样的地方:如果文档不存在,就索引新的文档。否则现有文档会被删除,新的文档被索引。版本信息(version)+1
PUT users/_doc/1
{
"tags":["guitar", "skateboard","reading"]
}
update文档
- Update方法不会删除原来的文档,而是实现真正的数据更新
- Post方法/ Payload需要包含在“doc”中
POST users/_update/1
{
"doc": {
"albums": ["Album1" , "ALumb2"]
}
}
运行后结果
{
"_index" : "users",
"_type" : "_doc",
"_id" : "1",
"_version" : 4,
"_seq_no" : 10,
"_primary_term" : 2,
"found" : true,
"_source" : {
"tags" : [
"guitar",
"skateboard",
"reading"
],
"albums" : [
"Album1",
"ALumb2"
]
}
}