1. 文档
es
中的文档相当于 MySQL
表中的一行,数据就存储在文档中。json
形式结果,由字段组成,常见的数据类型有:
- 字符串:
text、keyword,text
是分词,keyword
是不分词的 - 数值型:
long、integer、short、byte、double、float、half_float、scaled_float
- 布尔:
boolean
- 日期:
date
- 二进制:
binary
- 范围类型:
integer_range、float_range、long_range、double_range、date_range
1.1 文档元数据
用于标注文档的相关信息:
_index
:文档所在的索引名_type
:文档所在的类型名_id
:文档唯一id
_score
:相关性算分_uid
:组合id
,有_type
和_id
组成(从6.x开始_type不再起作用,同_id
一样)_source
:文档的原始json
数据,可以从这里获取每个字段的内容_all
:整合所有字段内容到该字段,默认下禁用
1.2 文档相关 API
1、创建文档:
# f1 索引名、doc 为 `_type` 文档类型名、1 文档 id
PUT f1/doc/1
{
"name": "rose",
"age": 18
}
2、查询文档:
GET f1/doc/_search # 查询该索引下所有文档
GET f1/doc/1 # 查询文档 ID 为 1 的文档
3、批量操作:
# 第一列的 index 表示新增,若存在则覆盖,其余的两个是 update 修改或 delete 删除
PUT /_bulk
{
"index": {
"_index": "test_index1",
"_type": "doc",
"_id": 3
}
}
{
"name": "rose"
}
{
"update": {
"_index": "test_index1",
"_type": "doc",
"_id": 1
}
}
{
"doc": {
"name": "lila"
}
}
{
"delete": {
"_index": "test_index1",
"_type": "doc",
"_id": 1
}
}
4、删除文档:
DELETE f1/doc/1 # 删除文档
5、一次性查询多个文档:
GET /_mget
{
"docs": [
{
"_index": "test_index1",
"_id": 1,
"_type": "doc"
},
{
"_index": "test_index1",
"_id": 3,
"_type": "doc"
}
]
}
2. 索引
由具有相同字段的文档列表组成,相当于 mysql
中的表。每个索引都有自己的 mapping
定义,用于定义字段名和类型,索引中存储着具有相同结构的文档。