ElasticSearch 简介概念及核心

匿名 (未验证) 提交于 2019-12-02 23:51:01

1.ES是什么

ES是面向文档的Nosql,这意味着它可以存储整个对象或文档。然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在es中,你可以对文档(而非成行成列的数据)进行索引,搜索、排序、过滤。这种理解数据的方式与以往完全不同,这也是es能够执行复杂的全文搜索的原因之一。

ES使用json作为文档序列化格式。

在ES中存储数据的行为叫索引(indexing)

数据存储在索引中(index),索引有多个分片组成
数据有类型(type)一个索引可以有多个类型
数据是文档(document)

一个数据库表(Table)下的数据由多行(ROW)多列(column,属性)组成,等价于1个Type由多个文档(Document)和多Field组成。

对比一下es和传统数据类型:
(DB) database(数据库) -- table(表) -- row(行) -- column(属性)
(ES) index (索引) -- type (类型) -- document(文档) -- filed(字段类型)

索引
user_result

类型
{
"user_result": {
//通过Mapping 映射
"properties": {
"createTime": {
"type": "date"
},
"isDelete": {
"type": "boolean"
},
"name": {
"type": "keyword"
},
"id": {
"type": "keyword"
},
"age": {
"type": "integer"
}
}
}
}
文档
{
"age": 26,
"createTime": 1563713312228,
"id": "123abc6",
"isDelete": false,
"name": "张三"
}


2.ES定义


ES也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单

3.ES核心

举例:

假设 IndexA 有2个分片,我们向 IndexA 中插入100条数据 (100个文档),
那么这100条数据会尽可能平均的分为50条存储在第一个分片,
剩下的50条会存储在另一个分片中

PUT indexName
{
"settings": {
"number_of_shards": 5
}
}
注意:索引建立后,分片个数是不可以更改的

举例:

如果 IndexA 所有数据文件大小是300G,改怎么定制方案了?
建议:建10个节点 (Node),Mapping 指定分片数为 10,满足每一个节点一个分片,每一个分片数据带下在30G左右。
SN(分片数) = IS(索引大小) / 30
NN(节点数) = SN(分片数) + MNN(主节点数[无数据]) + NNN(负载节点数)
3.4 Replia 副本



当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片。

4.ES的可视化插件

Head 谷歌应用中有

5.ES特点和优势




3.可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
---------------------

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!