热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Elasticsearch学习笔记(一)简介

Elasticsearch学习笔记(一)简介什么是Elasticsearch?以前我们学过标准信息搜索工具Lucene,但它不能够在一个合理的时间

Elasticsearch学习笔记(一)简介

   什么是Elasticsearch?

以前我们学过标准信息搜索工具Lucene,但它不能够在一个合理的时间内存储和检索海量数据,不具备良好的可扩展性,一般也不适合分布式大数据搜索、挖掘和云计算环境。
为了满足大数据平台下的信息检索,并且高可靠性的性能要求,Elasticsearch就应运而生。

  • 分布式实时文件存储
  • 实时分析的分布式搜索引擎
  • 可以扩展到上百台服务器
作为开源分布式搜索和数据处理平台,Elasticsearch不仅仅是一个数据库,同时它还是一个基于Lucene构建的开源、分布式、RESTful信息检索框架,能够实时搜索,并且稳定可靠,EIK架构为编程人员提供了一个分布式的可扩展的信息检索和基于Lucene的全文搜索,基于Logstash的日志处理机制、基于Kibana的挖掘结果可视化的的机制。 Elasticsearch的支持插件机制,如与mongoDB、couchDB同步的River插件、中文分词插件、Hadoop插件、脚本插件等。 与Lucene的区别? Elasticsearch执行搜索的速度更快,可以简单的通过HTTP方式,使用JSON来操作数据,并支持对分布式集群的搜索。 Elasticsearch对分布式支持,其索引功能分拆为多个分片,每个分片可有0个或多个副本,集群中的每个数据节点都可承载一个或多个分片,并且能协调和处理各种操作;负载再平衡(Rebalancing)和路由(Routing)在大多数情况下都是自动完成的。 相关概念: (1)Cluster和Node——Elasticsearch中的Cluster是对外提供搜索服务的集群,组成这个集群的各个节点叫Node.集群Cluster是一组有着相同cluster.name的节点,他们协同工作,互相分享数据,提供了故障转移和扩展的功能。Node又分为IndexNode、DataNode等。节点之间是对等关系的(去中心化),而弱化的Master节点只不过多了维护集群状态的功能。 (2)Shards——Elasticsearch将一个完整的索引分成若干个部分,每个部分就是一个Shards,每个Shard实际上就是一个基于Lucene的索引。Shards的数量一般在索引创建前制定,且索引创建后不能更改。 (3)Replicas——Replics是索引的冗余备份,可用于防止数据丢失或用来做负载均衡。一般地,Elasticsearch会自动对索引请求进行负载均衡。 (4)Recover——在有节点加入或退出集群Cluster或故障节点重新启动时,Elasticsearch会根据机器的负载情况,对索引分片Shards进行重新分配。 (5)River——River是一个运行在Elasticsearch集群内部的插件,主要用来从外部获取以后数据,然后在Elasticsearch里创建索引。常见的有MongoDB、JDBC river Plugin等。 (6)Gateway——是Elasticsearch索引数据快照的存储方式,当Elasticsearch集群关闭再重新启动时,就会从Gateway中读取索引数据快照。Elasticsearch支持多种类型的Gateway,本地文件系统、分布式文件系统、Hadoop的HDFS (7)Discover.zen——Discover.zen代表Elasticsearch的自动发现节点机制。Zen用来实现节点自动发现和Master节点选举,Master节点负责节点的加入和退出以及分片shard的重新分配。 (8)Transport——Transport代表Elasticsearch内部节点或集群与客户端的交互方式,默认内部是使用TCP协议进行交互的,同时支持HTTP协议(JSON格式)、Thrift、Servlet等传输协议。 (9)Index、Type、Document、Field——Index是数据存储的地方,可以快速高效的堆索引中的数据进行全文索引,类似于RDBMS数据库中的Database;在Index下一般会有多个存储数据的Type,Type类似于Database的table,用来存放具体数据;Document类似于关系数据库的一行数据,在一个Type里的每一个Document都有一个唯一的ID作为区分。 (10)Mapping——Mapping定义索引下的Type的字段处理规则,如索引如何建立、索引数据类型、是否保存原始索引JSON文档,是否需要进行分词处理、如何进行分词处理等。一般地,一个索引文件下能存储不同映像(Mapping)的类型文件(Types).
从图中可以看出,Elasticsearch可以接受来自本机、共享以及云平台上的数据;在Lucene提供的基本功能上,通过构建分布式索引,完成对大数据的索引、搜索等处理。其中,River作为Elasticsearch内部运行的插件,获取其他存储方式的数据到Elasticsearch.Zen用来作为节点自动发现和Master节点选举;EC2(Elastic Copute Cloud)借由Web服务的方式让使用者可以弹性的运行自己的Amazon机器映像,提供可调整的云计算能力。通过提供的Thrift、Memcached、HTTP等方式使用Elasticsearch的API。在顶层,用户可以基于RESTful和客户端的方式通过Elasticsearch API完成数据操作、管理等操作。 RESTful接口URL的格式是?

curl -X ':///?' -d ''

  • VERB HTTP方法:GET(获取), POST(更新), PUT(创建), HEAD, DELETE(删除)
  • PROTOCOL: http或者https协议(只有在Elasticsearch前面有https代理的时候可用)
  • HOST: Elasticsearch集群中的任何一个节点的主机名,如果是在本地的节点,那么就叫localhost
  • PORT: Elasticsearch HTTP服务所在的端口,默认为9200
  • QUERY_STRING: 一些可选的查询请求参数,例如?pretty参数将使请求返回更加美观易读的JSON数据
  • BODY: 一个JSON格式的请求主体(如果请求需要的话)
这个是Elasticsearch的head插件,从这里可以看出主节点是Banshee,共用四个节点,71个主分片,至于Elasticsearch的插件机制、API操作等将在以后逐步的介绍。


推荐阅读
  • 在安装并配置了Elasticsearch后,我在尝试通过GET /_nodes请求获取节点信息时遇到了问题,收到了错误消息。为了确保请求的正确性和安全性,我需要进一步排查配置和网络设置,以确保Elasticsearch集群能够正常响应。此外,还需要检查安全设置,如防火墙规则和认证机制,以防止未经授权的访问。 ... [详细]
  • Apache Hadoop HDFS QJournalProtocol 中 getJournalCTime 方法的应用与代码实例分析 ... [详细]
  • 基于Node.js的高性能实时消息推送系统通过集成Socket.IO和Express框架,实现了高效的高并发消息转发功能。该系统能够支持大量用户同时在线,并确保消息的实时性和可靠性,适用于需要即时通信的应用场景。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 本文详细介绍了HDFS的基础知识及其数据读写机制。首先,文章阐述了HDFS的架构,包括其核心组件及其角色和功能。特别地,对NameNode进行了深入解析,指出其主要负责在内存中存储元数据、目录结构以及文件块的映射关系,并通过持久化方案确保数据的可靠性和高可用性。此外,还探讨了DataNode的角色及其在数据存储和读取过程中的关键作用。 ... [详细]
  • sh cca175problem03evolveavroschema.sh ... [详细]
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • 通过使用Sqoop导入工具,可以精确控制并高效地将表数据的特定子集导入到HDFS中。具体而言,可以通过在导入命令中添加WHERE子句来指定所需的数据范围,从而在数据库服务器上执行相应的SQL查询,并将查询结果高效地存储到HDFS中。这种方法不仅提高了数据导入的灵活性,还确保了数据的准确性和完整性。 ... [详细]
  • 本文深入解析了Java 8并发编程中的`AtomicInteger`类,详细探讨了其源码实现和应用场景。`AtomicInteger`通过硬件级别的原子操作,确保了整型变量在多线程环境下的安全性和高效性,避免了传统加锁方式带来的性能开销。文章不仅剖析了`AtomicInteger`的内部机制,还结合实际案例展示了其在并发编程中的优势和使用技巧。 ... [详细]
  • Android 网络请求中的下载断点续传技术解析与实现
    本文详细解析了 Android 平台下网络请求中下载断点续传的技术原理与实现方法。断点续传技术在下载过程中尤为重要,当下载因网络中断或其他原因暂停时,该技术允许从上次中断的位置继续下载,而无需重新开始。文章重点介绍了断点续传的逻辑思路和关键实现步骤,包括如何记录下载进度、处理 HTTP 请求头以及优化下载性能。通过具体示例代码,读者可以更好地理解和应用这一技术,提高应用程序的用户体验和可靠性。 ... [详细]
  • 在CentOS上部署和配置FreeSWITCH
    在CentOS系统上部署和配置FreeSWITCH的过程涉及多个步骤。本文详细介绍了从源代码安装FreeSWITCH的方法,包括必要的依赖项安装、编译和配置过程。此外,还提供了常见的配置选项和故障排除技巧,帮助用户顺利完成部署并确保系统的稳定运行。 ... [详细]
  • 在开发DedeCMS企业模板时,常常需要创建如“关于我们”等单页面。由于DedeCMS不直接支持像WordPress那样的独立页面功能,但可以通过调用栏目内容来实现这一需求。本文详细介绍了如何利用DedeCMS的栏目功能,结合具体步骤和技巧,帮助网站管理员高效地创建和管理单页面内容。 ... [详细]
  • 深入理解Spark框架:RDD核心概念与操作详解
    RDD是Spark框架的核心计算模型,全称为弹性分布式数据集(Resilient Distributed Dataset)。本文详细解析了RDD的基本概念、特性及其在Spark中的关键操作,包括创建、转换和行动操作等,帮助读者深入理解Spark的工作原理和优化策略。通过具体示例和代码片段,进一步阐述了如何高效利用RDD进行大数据处理。 ... [详细]
  • 本文介绍了如何使用Hive分析用户最长连续登录天数的方法。首先对数据进行排序,然后计算相邻日期之间的差值,接着按用户ID分组并累加连续登录天数,最后求出每个用户的最大连续登录天数。此外,还探讨了该方法在其他领域的应用,如股票市场中最大连续涨停天数的分析。 ... [详细]
  • Elasticsearch 嵌套调用中动态类导致数据返回异常分析与解决方案 ... [详细]
author-avatar
ecrbw_9870105634
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有