`
- 浏览:
165889 次
- 性别:
- 来自:
上海
-
The Future of Compass & ElasticSearch
-
此篇文章,作者向大家解释了好久不更新Compass的原因,在Compass改变与更新时所遇到的问题,所以才产生了ElasticSearch,同时介绍了Compass和ElasticSearch的相关特性,他们一脉相承,却又有不同之处。希望后来者转到ES上,不过原来的还是会继续维护。
-
-
Its been a long time since I blogged about Compass, and I guess its about time to discuss Compass
, ElasticSearch
, and how they relate to one another.
-
-
I started Compass six years ago with a real belief that search is
something that any application should have (and search here is not just
full text search), and the aim was to have search integrated into a Java
application as simple as possible.
-
-
Compass has pioneered some really exciting features, including the ability to map your domain model to a search engine (OSEM
), later also XML
and JSON
support, and integration with other ORM
libraries (Hibernate, JPA
,
and so on) to try and make the integration of search as seamless as
possible to your typical Java stack application (which has been copied
quite nicely by others as well ;) ).
-
-
During the lifecycle of Compass, I have also tried to address the
scalability aspects of a search solution. By integrating with solutions
such as GigaSpaces, Coherence, and Terracotta, the aim was to try and
make a search based solution more scalable and usable by applications.
-
-
About 8 months ago, I started to think about Compass 3.0. I knew that
it required a major rewrite in how it uses Lucene (Lucene 2.9 came with
several major changes internally, mainly in how it handles low level
readers and search), and also in how to better create a scalable search
solution, being able to scale from a single box to many easily and
seamlessly. The changes did not end there, I also wanted to create a
solution where adding more advance search features, such as facets and
others, would be simple.
-
-
The more I thought about it, the more I understood that this
basically entitles a complete rewrite of Compass if its going to be done
correctly. Also, I wanted to bring to the table the experience I had
with search over the past years and how search should be done, which is
hard with an existing codebase.
-
-
This is an important point, especially when it comes to scalable
search, which I would like to touch on. The way that I started with
trying to solve scalable search using Compass is by creating a
distributed Lucene Directory implementation. Of course, this does gets
you a bit further down the scalability road, but its very evident for
people knowing how Lucene works (or, for that matter, search engines)
that this is not the preferred solution (I knew it as I was writing it).
Even going up the stack and creating something similar to Lucandra
won’t cut it… . The proper way to solve the scalability problem is by
running a “local” index (a shard) on each node, and do map reduce when
you execute a search, and routing when you index (this is a very
simplistic explanation).
-
-
So, I started out building elasticsearch. Its basically a solution
built from the ground up to be distributed. I also wanted to create a
search solution that can be used by any other programming language
easily, which basically means JSON
over HTTP
, without sacrificing the ease of use within the Java programming language (or more specially, the JVM
).
-
-
To be honest, I am amazed at what has happened in just 8 months.
ElasticSearch is up and running, providing all the core features I
wanted it to have at the beginning. Its a scalable search solution, with
a JSON
over HTTP
interface as well as really nice “native” Java API
(it gets nicer in the upcoming 0.9 release).
-
-
Sadly, I have been spending a lot of time on elasticsearch, and
almost no time on Compass itself, especially around the forum. For that,
I deeply apologize to the amazing Compass users that have been there
over the years.
-
-
So, what about the future of Compass? I see ElasticSearch as Compass
3.0. Thats how I would have wanted the next major version of Compass to
look like. This is not to say that the current ElasticSearch version
implements all of Compass features, but the basis is there. The two main
features that are missing are OSEM
, and ORM
integration.
-
-
As for OSEM
, ElasticSearch can already index JSON
(and JSON
like structure, for example, in the form of a Map). What is left to be
done is to create a mapping layer from the object model to this JSON
like structure. ORM
level integration should work in very similar to how Compass implements it today.
-
-
In terms of Java (JVM
) level integration,
ElasticSearch can easily either start embedded or remote to the Java
process, both in distributed mode or in a single node mode.
-
-
So, what should someone do today? If you are going to start a new
project, I would suggest you take ElasticSearch for a spin, I am sure
you will like it. Existing Compass users should start to give serious
thought as to how to migrate to ElasticSearch. Hopefully, once OSEM
is implemented in ElasticSearch, the migration will be simpler.
-
-
Regarding the current Compass 2.x version, its basically in
maintenance mode. I will try and help in the forum as much as I can.
Will gladly accept patches and apply them to trunk and maybe even
release a minor version for it. If someone would like to get more
involved with it (administer the forum, help with the patches, releases,
commit permission, and so on), I would be happy for it.
-
-
As far as I am concerned, the future is ElasticSearch. It is probably
the most advanced open source distributed search solution you can find
today, and its integration with Java (JVM
) is a first class citizen. I hope that Compass user base will follow… .
-
-
-shay.banon
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
2010年,Shay Banon对Compass进行了重构,推出了ElasticSearch,重点解决了分布式支持和简化使用的问题,通过RESTful API使其可以被多种编程语言调用。 **ElasticSearch的分布式架构** ElasticSearch的分布式特性...
后来,他决定重写 Compass 库使其成为一个独立的服务叫做 Elasticsearch。 Elasticsearch 的应用场景非常广泛,包括: * 全文搜索 * 结构化搜索 * 分析 * 实时搜索 * 输入实时搜索(search-as-you-type) * 搜索...
this is the official document of all of the compass system such as data structure sampling frequency and navigation part
Elasticsearch(简称ES)是一种基于Lucene的开源搜索引擎,主要设计用于分布式、实时的文档存储和搜索。它不仅能够高效地处理结构化和非结构化的数据,还提供了数据分析的功能,使得用户可以在海量数据中快速获取...
2009年,Shay Banon决定将Compass项目重构,并创建了ElasticSearch项目。2010年,ElasticSearch项目在Github上开源。现在,ElasticSearch已经成为业界领先的搜索和数据分析引擎。 五、ElasticSearch的应用场景 ...
Elasticsearch作为下一代的Compass,不仅继承了Lucene的强大搜索能力,更在多方面进行了优化和创新。它具备以下显著优势: - **Schema-Free(无模式)**:采用NoSQL的数据存储方式,无需预定义数据库结构,便于数据...
随着需求的增长,他将该项目发展成了 Compass 库,随后又进一步改进为独立的服务 Elasticsearch。自 2010 年首次发布以来,Elasticsearch 迅速获得了广泛的认可和支持,成为 GitHub 上最受欢迎的项目之一。 #### 5....
### Elasticsearch技术解析与实践 #### 1. Elasticsearch简介 ##### 1.1 Elasticsearch概述 Elasticsearch是一款基于Lucene的开源、分布式、RESTful全文搜索引擎。它不仅支持高可用性和可扩展性,还具备强大的...
【compass完整可用项目】是一个基于特定技术栈的软件开发项目,该项目的核心是Compass库,一个与Lucene紧密集成的全文搜索引擎工具。Compass提供了一种简单的方式来在Java应用程序中集成全文搜索功能,使得开发者...
Compass搜索引擎技术是一种基于Lucene的全文检索框架,它提供了更高级别的API和集成机制,使得在Java应用程序中实现搜索引擎功能变得更加便捷。Compass的主要目标是将全文索引能力无缝地融入到现有的业务应用程序中...
COMPASS 教程Pdf COMPASS 是一款专业的油气田设计和生产软件,主要用于油气田的规划、设计和生产过程。下面是 COMPASS 的一些重要知识点: 1. COMPASS WELLPLAN FOR WINDOWS 功能简介:COMPASS 的核心功能包括 ...
MongoDB Compass是MongoDB官方提供的一款图形化管理工具,它为MongoDB数据库的使用者提供了直观的界面,方便进行数据浏览、查询、操作以及性能分析。MongoDB Compass 1.15.1是这个系列的一个版本,它无需安装,可以...
Elasticsearch 的前身是 Shay Banon 在 2004 年基于 Lucene 开发的 Compass,2010 年进行了重构并更名为 Elasticsearch。它克服了 Lucene 的局限性,如语言限制、陡峭的学习曲线,并引入了分布式和水平扩展的支持,...
### Compass 使用详解 #### 一、Compass 概述 Compass 是一款开源的 Java 库,用于简化 Lucene 的使用。它通过提供类似于 Hibernate 的对象关系映射(ORM)功能,使得开发者能够更加轻松地将 Java 对象映射到 ...
### Java搜索 Compass 资料知识点 #### 一、Compass 概述 Compass 是一个为 Java 应用程序提供全文检索功能的框架。它能够帮助开发者在 Java 应用程序中轻松实现复杂的搜索需求,并且具有较高的性能。Compass 基于...
CompassHits hits = compass.search(query); for (CompassHit hit : hits) { System.out.println(hit.getId() + ": " + hit.getData()); } // 关闭Compass compass.close(); ``` 通过以上步骤,你可以开始探索...