QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

Elasticsearch 的诞生、发展与愿景

  • 2014-12-10
  • 本文字数:1715 字

    阅读完需:约 6 分钟

Elasticsearch 是一款基于 Apache Lucene 构建的开源搜索引擎,它采用 Java 编写并使用 Lucene 构建索引、提供搜索功能,Elasticsearch 的目标是让全文搜索变得简单,开发者可以通过它简单明了的 RESTFul API 轻松地实现搜索功能,而不必去面对 Lucene 的复杂性。Elasticsearch 能够轻松的进行大规模的横向扩展,以支撑 PB 级的结构化和非结构化海量数据的处理,最近来自于 S&S Media 的 Diana Kupfer 就 Elasticsearch 的发展历程采访了其创建者Shay Banon,本文整理了该采访的主要内容,如果想阅读英文原文,可以点击这里

在谈到为什么会接触Lucene 并开发Elasticsearch 的时候,Shay Banon 认为自己参与Lucene 完全是一种偶然,当年他还是一个待业工程师,跟随自己的新婚妻子来到伦敦,妻子想在伦敦学习做一名厨师,而自己则想为妻子开发一个方便搜索菜谱的应用,所以才接触到Lucene。直接使用Lucene 构建搜索有很多问题,包含大量重复性的工作,所以Shay 便在Lucene 的基础上不断地进行抽象,让Java 程序嵌入搜索变得更容易,经过一段时间的打磨便诞生了他的第一个开源作品“Compass”,中文即“指南针”的意思。之后,Shay 找到了一份面对高性能分布式开发环境的新工作,在工作中他渐渐发现越来越需要一个易用的、高性能、实时、分布式搜索服务,于是他决定重写Compass,将它从一个库打造成了一个独立的server,并将其改名为Elasticsearch。

对于开发开源分布式系统的一些最佳实践,以及需要特别注意的地方,Shay Banon 认为构建一个分布式的系统并不容易,在将Elasticsearch 从一个个人项目变成一个公司项目之后,他们的首要任务就是创建一个崭新的测试基础设施以测试并验证系统的行为。分布式系统需要在网络上的不同机器上运行,这意味着当错误发生的时候很难调试,为此Elasticsearch 花费了大量时间构建了一个能够将分布式测试作为“普通”集成测试的一部分运行的测试工具。Shay Banon 认为“如果一个系统没有测试,何谈它的运行机理”,测试系统是构建分布式系统最重要的基础设施之一。

Shay Banon 认为对于现在的企业而言数据是所有业务的生命源泉,企业想要通过最简单的方式从数据中获取尽可能多的价值,而搜索就是实现这一目标的一种非常好的方式。 Elasticsearch 能够对海量数据进行全文搜索,结构化的搜索和分析,并且已经被大量的组织所使用,包括 Foursquare、Wikimedia、GitHub 以及 CERN。谈到 Elasticsearch 的成功,Shay Banon 认为 Elasticsearch 通过构建一种能够允许用户将任意领域模型映射到“搜索”上的技术实现了用例的爆发式增长;通过标准化的 JSON 和 RESTful 接口,使用不同编程语言、不同框架的开发者可以将其应用到各种各样的用例中。另外,Elasticsearch 不关心数据的类型,无论是传统的 web 页面、word 文档、web 服务器的日志,还是 Foursquare 上的一个位置,银行的一条交易记录都可以通过它进行索引并搜索。

今年夏天,Elasticsearch 获得了 7000 万美元的 C 轮融资,对于该融资对公司路线图的影响,Shay Banon 说:

“正如你所看到的,作为一家公司我们有非常雄伟的目标。我们最高的目标就是尽快地为我们的用户交付实实在在的东西。在创建公司的时候我们做的第一件事就是确保所有流行的语言和框架都有正式的客户端驱动。现在,我们已经有可以与 Ruby、Python、PHP、Perl、.NET 和 Java 集成的客户端,将来会有更多。我们还在构建 Kibana 和 Logstash,前者旨在让用户能够非常容易地可视化 Elasticsearch 中的数据,后者则是为了收集、分析和存储日志而设计,用户可以使用它将数据导入到 Elasticsearch 中。除此之外,我们还在开发一个能够将 Elasticsearch 与 Hadoop 集成到一起的模块,它支持所有的 Hadoop 发行版,包括 Apache Hadoop、MapR、Cloudera 和 Hortonworks。这些都是大项目,大部分投资都进入到了这些项目的开发中。通过融资,我们不仅能够确保公司可以实现短期目标,同时还能够制定雄伟的长期计划并尽快地开始实施。”


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-12-10 02:2814259
用户头像

发布了 321 篇内容, 共 123.3 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

Java中高级核心知识全面解析——Dubbo,java语言入门自学书

Java 程序员 后端

Java反射的深入浅出,mongodb优化面试

Java 程序员 后端

Java 必须掌握的 12 种 Spring 常用注解!你掌握了几种?

Java 程序员 后端

Java中的几种线程池详解,rabbitmqpdf百度云

Java 程序员 后端

JavaScript基础大总结,对于java开发岗位的理解面试

Java 程序员 后端

JavaWeb学习总结18--redis学习,java高级程序设计作业系统

Java 程序员 后端

Java个人学习之旅(第十天),java就业班百度网盘

Java 程序员 后端

Java之Spring基础与IOC,java实用教程第五版答案第四章

Java 程序员 后端

Java之StringUtils的常用方法,java整体项目架构图

Java 程序员 后端

Java 低代码开发平台“光”发布 2,springboot的工作原理图

Java 后端

Java 多线程 —— 同步代码块,联通java开发面试

Java 程序员 后端

Java中当对象不再使用时,不赋值为null会导致什么后果?

Java 程序员 后端

JavaWeb快速入门--Tomcat,java高级特性面试

Java 程序员 后端

java中常用单词系列(一),最新Java高级面试题汇

Java 程序员 后端

Spring是如何自动注入多类型的?

编号94530

spring bean @Autowired 自动注入

Java几种常用JSON库性能比较,java接口开发面试

Java 程序员 后端

Java初学01:学习路线,java基础入门清华大学出版社

Java 程序员 后端

Java基础 - 单例(饿汉、懒汉),Runtime类,java教程推荐学客巴巴

Java 程序员 后端

Java 多线程 —— 同步代码块(1),狂神说docker进阶笔记

Java 程序员 后端

Java中高级核心知识全面解析-容器(ArrayList)

Java 程序员 后端

JavaWeb快速入门--Tomcat(1),关于Java性能优化的几点建议

Java 程序员 后端

Java 调试技术 JPDA 架构解读,图文详解

Java 程序员 后端

JavaWeb Ajax详解,java64位3下载百度云盘

Java 程序员 后端

Java中高级核心知识全面解析——常用框架(Spring常用注解

Java 程序员 后端

JAVA代码审计之Shiro反序列化漏洞分析,浦发银行Java开发笔试题

Java 程序员 后端

JavaWeb快速入门--JavaScript(2),java面试题库及答案

Java 程序员 后端

Java中的泛型,java程序执行过程与编译原理

Java 后端

JavaOOP面试题48题(含答案),大厂Java高级多套面试专题整理集合

Java 程序员 后端

Java内存问题 及 LeakCanary 原理分析,mybatis架构设计层次

Java 程序员 后端

Java 常见的 30 个误区与细节!,java面试刷题

Java 程序员 后端

JAVA-数据结构与算法,mysql数据库应用与实践教程

Java 程序员 后端

Elasticsearch的诞生、发展与愿景_大数据_孙镜涛_InfoQ精选文章