elasticsearch简介(大数据技术)

ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用ElasticSearch的水平伸缩性,能使数据在生产环境变得更有价值。ElasticSearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elastic Search 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。
Elasticsearch是与名为Logstash的数据收集和日志解析引擎以及名为Kibana的分析和可视化平台一起开发的。这三个产品被设计成一个集成解决方案,称为“Elastic Stack”(以前称为“ELK stack”)。
Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。”Elasticsearch是分布式的,这意味着索引可以被分成分片,每个分片可以有0个或多个副本。每个节点托管一个或多个分片,并充当协调器将操作委托给正确的分片。再平衡和路由是自动完成的。“相关数据通常存储在同一个索引中,该索引由一个或多个主分片和零个或多个复制分片组成。一旦创建了索引,就不能更改主分片的数量。
Elasticsearch使用Lucene,并试图通过JSON和Java API提供其所有特性。它支持facetting和percolating,如果新文档与注册查询匹配,这对于通知非常有用。另一个特性称为“网关”,处理索引的长期持久性;例如,在服务器崩溃的情况下,可以从网关恢复索引。Elasticsearch支持实时GET请求,适合作为NoSQL数据存储,但缺少分布式事务。 [1]
历史与发展
Shay Banon在2004年创造了Elasticsearch的前身,称为Compass。在考虑Compass的第三个版本时,他意识到有必要重写Compass的大部分内容,以“创建一个可扩展的搜索解决方案”。因此,他创建了“一个从头构建的分布式解决方案”,并使用了一个公共接口,即HTTP上的JSON,它也适用于Java以外的编程语言。Shay Banon在2010年2月发布了Elasticsearch的第一个版本。
Elasticsearch BV成立于2012年,主要围绕Elasticsearch及相关软件提供商业服务和产品。2014年6月,在成立公司18个月后,该公司宣布通过C轮融资筹集7000万美元。这轮融资由新企业协会(NEA)牵头。其他投资者包括Benchmark Capital和Index Ventures。这一轮融资总计1.04亿美元
2015年3月,Elasticsearch公司更名为Elastic。
在2018年6月,Elastic提交了首次公开募股申请,估值在15亿到30亿美元之间。公司于2018年10月5日在纽约证券交易所挂牌上市。一些组织将Elasticsearch作为托管服务提供。这些托管服务提供托管、部署、备份和其他支持。大多数托管服务还包括对Kibana的支持。
Elasticsearch 自从诞生以来,其的应用越来越广泛,特别是大数据领域,功能也越来越强大,但是如何有效的监控管理 Elasticsearch 一直是公司所面对的难题,由于 Elasticsearch 集群的稳定性,决定了其业务发展的高度,对于一个应用来说其稳定是第一目标,所以完善的监控体系是必不可少的。此外,Elasticsearch 写入和查询对资源的消耗都很大,如何合理有效地控制资源,既能满足写入和查询的需求,又能满足资源充分利用,这是公司必须面对的问题。
在国内,还没较为完善的面向 Elasticsearch 的监控管理平台,很多企业往往只关注搭建一套简单分布式的集群环境,而对这个集群的缺乏监控和管理,元数据混乱,写入和查询耦合,缺乏监控一旦集群出现问题,就会导致数据丢失,甚至很容易导致线上应用故障。相比于小公司,中大型公司的资金较为充足,所以中大型公司,会选择为每个应用去维护一套集群,但是这每当资源不够需要扩容或者缩容时,极其不方便,需要增加删除节点,其运维成本过高。而且对每个应用来说,可能不能够充分利用资源,但是如果和其他应用混合部署,但是又涉及到复杂的资源分配问题,而且随着应用的发展,资源经常需要变动。在国外,ELasticsearch 的应用也很广泛,也有对 Elasticsearch 进行很好的监控和管理,Amazon AWS
中也有基于 Elasticsearch 构建的平台服务,帮助电商应用程序,网站等提供安全,高可靠,低成本,低延时,高吞吐的量的个性化搜索。虽然,对集群进行了监控和管理,但是管理的维度还是集群级别的,而对于应用往往是模板级别的,如果应用无法和集群一一对应,那就无法进行更高效的管理。这无法满足公司级别想要高效利用资源,集群内部能支持多个应用的场景 [2] 。
有关概念
cluster:代表一个集群,集群中有多个节点,其中有一个为主节点,这个主节点是可以通过选举产生的,主从节点是对于集群内部来说的。es的一个概念就是去中心化,字面上理解就是无中心节点,这是对于集群外部来说的,因为从外部来看es集群,在逻辑上是个整体,你与任何一个节点的通信和与整个es集群通信是等价的。
shards:代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上。构成分布式搜索。分片的数量只能在索引创建前指定,并且索引创建后不能更改。
replicas:代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点某个分片损坏或丢失时可以从副本中恢复。二是提高es的查询效率,es会自动对搜索请求进行负载均衡。
recovery:代表数据恢复或叫数据重新分布,es在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据恢复。
river:代表es的一个数据源,也是其它存储方式(如:数据库)同步数据到es的一个方法。它是以插件方式存在的一个es服务,通过读取river中的数据并把它索引到es中,官方的river有couchDB的,RabbitMQ的,Twitter的,Wikipedia的。
gateway:代表es索引快照的存储方式,es默认是先把索引存放到内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个es集群关闭再重新启动时就会从gateway中读取索引备份数据。es支持多种类型的gateway,有本地文件系统(默认),分布式文件系统,Hadoop的HDFS和amazon的s3云存储服务。
discovery.zen:代表es的自动发现节点机制,es是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时也支持点对点的交互。
Transport:代表es内部节点或集群与客户端的交互方式,默认内部是使用tcp协议进行交互,同时它支持http协议(json格式)、thrift、servlet、memcached、zeroMQ等的传输协议(通过插件方式集成)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python转为字节_将字节转换为python中的位

I am working with Python3.2. I need to take a hex stream as an input and parse it at bit-level. So I usedbytes.fromhex(input_str)to convert the string to actual bytes. Now how do I convert these bytes to bits?解决方案Another way to do this is by using the…

Linux 监控数据库资源占用

1.用xshell连接远程服务器,登录用户名和密码 2.进入远程服务器 3.输入top,回车,显示如下图所示 4.Cpu states: cpu状态 0,2,4,6 说明cpu是四核的 IDLE 代表闲置CPU百分比 百分号前面数字越大&#xff…

mysql操作窗口如何设置粘贴,Access6.5在表中复制和粘贴数据

在城市和省份两个字段里有很多重复的内容每次都输入一遍显得非常麻烦我们可以结合复制和粘贴数据两个命令将一个数据块很方便地放到很多位置上去 首先打开Access 的剪贴板单击视图菜单将鼠标移动到工具选项上在工具选项右边弹出一个菜单单击上面的剪贴板命在城市和省份两个字段…

windows下python安装

第一步:下载Python安装包 在Python的官网 www.python.org 中找到最新版本的Python安装包,点击进行下载,请注意,当你的电脑是32位的机器,请选择32位的安装包,如果是64位的,请选择64位的安装包&am…

ssdp协议_Cotopaxi:使用指定IoT网络协议对IoT设备进行安全测试

cotopaxi是用于IoT设备安全测试的工具集。你可以指定IoT网络协议(如CoAP,DTLS,HTCPCP,mDNS,MQTT,SSDP)进行测试。安装只需从git克隆代码即可:https://github.com/Samsung/cotopaxi要求目前Cotopaxi仅适用于…

ORACLE中数据类型

ORACLE中数据类型 1.在ORACLE中包含有:数值类型 字符串类型 日期类型等等 2.数值类型--- 1)number 在不设置宽度的情况下,默认是38个最大值 如果设置宽度,那么方式:number(2)--表示宽度为2的整型数据类型 如果设置小数…

学习记录 php,PHP进阶篇学习专用记录

print_r和echo有什么不同?答:echo只能输出字符串,或者字符串变量,print_r可以输出任何类型echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值print() 只能打印出简单类型变量的值(如int,string)print_r() 可以…

实例1:python

#有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? #!/usr/bin/python -- coding: UTF-8 -- for i in range(1,5): for j in range(1,5): for k in range(1,5): if( i ! k ) and (i ! j) and (j ! k…

unit类型是什么?_项目中有用过锁吗?能解释一下什么是AQS(AbstractQueuedSynchronizer)吗?...

1 前言 锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能防止多个线程同时访问共享资源(但是有些锁可以允许多个线程并发的访问共享资源,如读写锁)。在以前,Java程序是靠synchronized来实现锁功能的,而在Jav…

java 4个系统,JSP系统的四个组成部分

JSP系统的四个组成部分JSP系统主要由四个部分组成:1)数据库连接部分:JSP系统支持常用的几个数据库,包括Oracle、Sybase、MSSQLServer、MySQL和DB2,根据用户选择的数据库类型和用户提供的数据库名称、用户名、密码使用JDBC同数据库…

递归树

用于可视化递归算法的流程。当你知道递归的时间复杂度的公式后,就可以画出递归树,有利于你计算递归算法的时间复杂度。 像这种公式,第一个2说明是二叉树,一分为2;第二个n/2,说明他的儿子们所占用的数据只有…

实例1:python(续)

#有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少? d[] for a in range(1,5): for b in range(1,5): for c in range(1,5): if (a!b) and (a!c) and (c!b): d.append([a,b,c]) print (“总数量&#xf…

python灰产_Python学习一周有感

从业至今,搞互联网将近7年了,如今,就连和我大学一个系的媳妇儿,都已经忘记了我是学工商管理的,每次聊天谈起来,都会用她那迷茫的眼神看着我:”你不是学计算机专业的吗?“大学毕业&am…

PHP统计API调用,php – 记录API调用

我编写了一个API,目前正在研究为系统提供日志记录的最佳方法.我们希望能够概述正在进行的呼叫,如果特定呼叫经常被击中等等.记录和呈现所有这些信息的最佳方法是什么?简单地想知道是否有任何预先构建或常用的解决方案,其API包含我正在寻找的内容.解决方法:有几种方法…

实例2:python

#企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高…

学习如何学习

作为一个有效的学习者至少与成为一名高效的编码人员一样重要。 当你是一名开发人员时,你的工作要求你每天都要学习 - 尽管像黑客新闻,Twitter,Reddit和Facebook一样引起了分心。 您经常遇到新的代码库和工作中的新技术挑战。当你处理开源回购…

Python reload() 函数

Python reload() 函数 描述 reload() 用于重新载入之前载入的模块。 语法 reload() 函数语法: reload(module) 参数 • module – 模块对象。 返回值 返回模块对象。 实例 以下实例展示了 reload() 的使用方法: 重新载入 sys 模块,并设置默认…

java快速排序直观演示代码,排序算法总结(含动图演示和Java代码实现)

本文将围绕冒泡排序、桶排序、计数排序、堆排序、插入排序、并归排序、快速排序和选择排序,按照描述、时间复杂度(最坏情况)、动态图展示和代码实现来讲解。本文默认排序为从小到大。本文相关代码已上传至github,欢迎关注https://github.com/zhuzhenke/c…

python ssh脚本_ssh爆破(python脚本)

最近在乌云看到一份端口详解:为了锻炼自己,按照端口详解写脚本#!/usr/local/bin/ python# -*- coding: UTF-8 -*-__author__ yangxiaodifrom multiprocessing import Poolfrom pexpect import pxsshimport sysreload(sys)sys.setdefaultencoding( "…

SVG_text.动态创建换行显示(横)

1、我的测试代码 1.1、 <?xml version"1.0" encoding"UTF-8"?> <svg width"1000" height"800" viewBox"-500 -200 1000 800" xmlns"http://www.w3.org/2000/svg" xmlns:xlink"http://www.w3.org/…