Elasticsearch-入门
2020-12-24 本文已影响0人
WebGiser
环境:Centos7、Docker、Elasticsearch7.8.0、Kibana7.8.0
image.pngimage.png
基本概念
1、索引(index):一个索引就是一个拥有几分相似特征的文档的集合。索引类似于关系型数据库中Database的概念。
2、类型(type):在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。类型类似于关系型数据库中Table的概念。
3、文档(document):一个文档是一个可被索引的基础信息单元,文档以JSON格式来表示。 在一个index/type里面,你可以存储任意多的文档。文档类似于关系型数据库中Record的概念。实际上一个文档除了用户定义的数据外,还包括_index、_type和_id字段。
4、分片和复制(shards & replicas):一个索引可以存储超出单个结点硬件限制的大量数据。分片允许你水平分割/扩展你的内容容量,允许你在分片(潜在地,位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量。
5、映射(mapping):mapping类似于传统关系型数据中table的schema,用于定义一个索引(index)的某个类型(type)的数据结构。
注意:elasticsearch 7.x版本之后已经彻底去除了type的概念,elasticsearch7默认不再支持指定索引类型,默认索引类型是_doc。index下面不再允许设置type。直接给某个index设置mapping即可。相当于index就是mysql数据库中的dabase.table了。
数据类型
下表列出的是ES中所支持的数据类型。(大类是对所有类型的一种归类,小类是实际使用的类型)
image.png
ES Restful API基本使用
1、集群和节点API
// 查看集群健康信息
GET _cat/health?help
// 查看集群中的节点信息
GET _cat/nodes?v
2、索引API
// 查看集群中的索引信息
GET _cat/indices?v
// 创建一个新的索引
PUT index_test
// 删除索引
DELETE index_test
3、映射API
// 查看索引的mapping
GET index_test/_mapping?pretty
// 创建索引的mapping
PUT index_test/_mappings
{
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
},
"sex":{
"type": "boolean"
},
"money":{
"type": "double"
},
"createDate":{
"type": "date"
}
}
}
// 同时创建索引和mapping
PUT index_test2
{
"mappings":{
"properties": {
"name": {
"type": "text"
},
"age": {
"type": "integer"
},
"sex":{
"type": "boolean"
},
"money":{
"type": "double"
},
"createDate":{
"type": "date"
}
}
}
}
4、文档API
// 查看文档
GET index_test/_doc/1?pretty
// 查看索引下的所有文档
GET index_test/_doc/_search
// 增加文档(指定id)
PUT index_test/_doc/1
{
"name": "张三",
"age": 20,
"sex": "true",
"money": "100.5",
"createDate": "2020-10-05"
}
// 增加文档(id自动生成)
POST index_test/_doc
{
"name": "李四",
"age": 20,
"sex": "true",
"money": "100.5",
"createDate": "2020-10-05"
}
// 修改文档
POST index_test/_doc/1
{
"name": "aaa"
}
// 删除文档
DELETE index_test/_doc/1
DSL特定语法检索和过滤-kibana
GET index_test/_doc/_search
{
"query": {
"match": {
"name": "四"
}
},
"sort": [
{ "age": "asc" }
]
}