Elasticsearch之入门知识
elasticsearch是一个高度可扩展得开源全文搜索和分析的引擎。可以快速、近实时的存储,搜索和分析大量数据。通常用作底层引擎技术,为具有复杂搜索功能和要求的程序提供支持。
用处:
• 运行网上商店,允许客户搜索产品。可以使用elasticsearch存储整个产品目录和库存,并为它们提供搜索和自动填充建议。
• 收集日志或交易数据,并且可以分析和挖掘此数据以查找趋势,统计信息,摘要或异常。可以使用logstash将收集到的数据提供给elasticsearch,然后elasticsearch可以运行搜索和聚合来挖掘需要的信息。
• 运行价格警报平台,允许精通价格的客户指定的一条规则,例如我想要购买的商品在下个月从任何供应商降价n元,我希望收到通知。这样可以刮取供应商价格,将其推入elasticsearch并使用其反响搜索功能来匹配价格变动与客户查询,并最终在发现匹配后将警报推送给客户。
• 快速调查,分析,可视化并询问有关大量数据的特定问题,数百万或数十亿条记录。可以使用elasticsearch存储数据,然后使用kibana构建自定义仪表板。
基本概念:
近实时(NRT)
elasticsearch是一个近实时的搜索平台,从索引文档到可搜索文档的时间有一点延迟,大概是一秒。
集群
集群是一个或多个节点的集合,它们共同保存整个数据,并提供跨所有节点的联合索引和搜索功能。集群由唯一名称标识,默认情况下为“elasticsearch”。这个名称很重要,因为如果节点设置为按名称加入集群,则该节点只能是集群的一部分。
注意不要在不同的环境中重用相同的集群名称,否则最终会导致节点加入到错误的集群里。例如,可以使用logging-dev,logging-test,logging-prod。
如果集群里只有一个节点,那么它是完全正常的。拥有多个独立的集群的话,每个集群都有自己唯一的名称。
节点
节点是作为集群里的单个服务器,存储数据并参与集群的索引和搜索功能。节点由名称标识,默认情况下,该名称是在启动时分配给节点的随机通用唯一标识符(UUID)。也可以自己定义所需的任何节点名称。此名称对于管理目的非常重要,可以在其中识别网络中哪些服务器与elasticsearch集群中的哪些节点相对应。
可以将节点配置为按集群名称加入特定集群。默认情况下,每个节点都设置为加入一个名为cluster的进去elasticsearch,这意味着如果在网络上启动许多节点并且假设它们可以互相发现,它们将自动形成并加入一个名为elasticsearch的集群。在单个集群中,可以拥有任意数量的节点。
索引
索引是具有相似的文档集合,例如可以为客户数据提供索引,为产品目录建立另一个索引,以及为订单数据建立另一个索引。索引由名称标识,必须全部为小写,该名称用于在对其中的文档执行索引、搜索、更新和删除操作时引用索引,在单个集群里,可以定义尽可能多的索引。
类型
在索引中,可以定义一个或多个类型,类型时索引的逻辑类别。类型定义为具有公共字段集的文档。假设运行一个博客平台,并将所有数据存储在一个索引中。在这个索引中,可以为用户数据定义一种类型,为博客数据定义另一种类型,以及为注释数据定义另一类型。
文档
文档时可以被索引的信息的基本单位。例如为单个客户提供一个文档,单个产品提供另一个文档,以及单个订单提供另一个文档。表现形式为json。
分片和副本
索引可以存储大量的数据,这些数据可能超过单个节点的硬件限制。例如十亿个文件占用磁盘空间1TB的单指标可能不适合对单个节点的磁盘或可能太慢服务仅从单个节点的搜索请求。
为了解决这个问题,elasticsearch提供细分指标,分成多个块称为分片的能力。当你创建一个索引,你可以简单的定义你想要的分片数量。每个分片本身是一个全功能的、独立的指数,可以托管在集群中的任何节点。
分片特征:
• 分片允许水平拆分或缩放内容的大小
• 分片允许分配和并行操作的碎片(可能在多个节点上)从而提高性能或吞吐量
这个机制中的碎片是分布式的以及其文件汇总到搜索请求时完全由elasticsearch管理,对用户来说是透明的。
在同一个集群网络上,故障时任何时候都可能出现的,拥有一个故障转移机制以防分片和节点因为某些原因离线或消失是非常有用的,并且被强烈推荐。elasticsearch允许创建一个或多个拷贝,索引分片进入所谓的副本或称作复制品的分片,简称副本。
副本特征:
• 副本为分片或节点失败提供了高可用性。需要注意的是,一个副本的分片不会分配在同一个节点作为原始的或主分片,副本是从主分片那里赋值过来的
• 副本允许用户扩展你的搜索量或吞吐量,因为搜索可以在所有副本上执行
Elasticsearch之入门知识的更多相关文章
- [置顶] Mysql存储过程入门知识
Mysql存储过程入门知识 #1,查看数据库所有的存储过程名 #--这个语句被用来移除一个存储程序.不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程 #SELECT NAME FROM ...
- 移动H5开发入门知识,CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- H5移动端开发入门知识以及CSS的单位汇总与用法
说到css的单位,大家应该首先想到的是px,也就是像素,我们在网页布局中一般都是用px,但是近年来自适应网页布局越来越多,em和百分比也经常用到了.然后随着手机的流行,web app和hybrid a ...
- Java web 入门知识 及HTTP协议详解
Java web 入门知识 及HTTP协议详解 WEB入门 WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源. Internet上供外界访问的Web资 ...
- Java基础入门知识
Java编程入门知识 知识概要: (1)Java入门基本常识 (2)Java的特性跨平台性 (3)Java的编程环境的搭建 (4)Java的运行机制 (5)第一个Java小程序入门 (1)Java ...
- zabbix入门知识
zabbix入门知识 zabbix中文手册 https://www.zabbix.com/documentation/3.4/manual/ 1.zabbix介绍 Zabbix 是一个企业级的分布式开 ...
- React的入门知识与概念【1】
回顾在以往的项目开发中,从最初的使用的原生html+js+css+jquery开发,到后来随着项目功能的增加,也渐渐学习了Vue.js框架的开发,以及Vue.js的全家桶Axios,Vue-route ...
- 我的Python笔记补充:入门知识拾遗
声明:本文整理借鉴金角大王的Python之路,Day1 - Python基础1,仅供本人学习使用!!! 入门知识拾遗 一.bytes类型 二.三元运算 1 result = 值1 if 条件 else ...
- 浅谈TCP IP协议栈(一)入门知识【转】
说来惭愧,打算写关于网络方面的知识很久了,结果到今天才正式动笔,好了,废话不多说,写一些自己能看懂的入门知识,对自己来说是一种知识的总结,也希望能帮到一些想了解网络知识的童鞋. 万事开头难,然后中间难 ...
随机推荐
- Ubuntu安装基础教程
作者:TeliuTe 来源:基础教程网 二十三.安装Ubuntu14.04 返回目录 下一课 14.04 版安装与前面版本类似,学习中遇到不清楚的地方,可以参考一下前面的内容,操作中注意细心,下面来看 ...
- BZOJ 1620 [Usaco2008 Nov]Time Management 时间管理:贪心
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1620 题意: 有n个工作,每一个工作完成需要花费的时间为tim[i],完成这项工作的截止日 ...
- git 错误 Reinitialized existing Git repository in /**/***/ 和refusing to merge unrelated histories
报错一: 这句话的意思是 在路径 /Users/jackma/Downloads/lotteryTicket 2/.git/ 现有的Git存储库初始化 ➜ lotteryTicket 2 git:(m ...
- BZOJ_3489_ A simple rmq problem_KDTree
BZOJ_3489_ A simple rmq problem_KDTree Description 因为是OJ上的题,就简单点好了.给出一个长度为n的序列,给出M个询问:在[l,r]之间找到一个在这 ...
- OutputDebugString()输出调试的使用
- 【221】◀▶ IDL GUI 函数说明
参考:GUI - Dialogs Routines参考:GUI - Widgets Routines参考:GUI - Compound Widgets Routines 01 DIALOG_MES ...
- SetConsoleCtrlHandler() -- 设置控制台信号处理函数
http://www.groad.net/bbs/thread-8253-1-1.html 当你在命令行里工作时,经常会输入 Ctrl-C 这个组合键以停止程序的运行.SetConsoleCtrlHa ...
- java集合框架之ArrayList与LinkedList的区别
参考http://how2j.cn/k/collection/collection-arraylist-vs-linkedlist/690.html#nowhere ArrayList和LinkedL ...
- dataTables使用ajax请求显示数据
dataTables是一种很好用前端表格显示库.当加载大量数据时,可以用Ajax 获取数据来提高效率,增速网页加载速率.下面以一个例子作示范. 首先,需要下载jQuery以及dataTables库.这 ...
- HTML学习笔记(六)TCP/IP
TCP/IP 是供已连接因特网的计算机进行通信的通信协议. 在 TCP/IP 中包含一系列用于处理数据通信的协议: TCP (传输控制协议) - 应用程序之间通信 UDP (用户数据包协议) - 应用 ...