2019独角兽企业重金招聘Python工程师标准>>> hot3.png

Posted by: Shay Banon on 07/07/2010

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…

About Shay Banon

Shay is the founder of the Compass open source project, a unique solution enabling search capabilities into any application model. He started working on mission critical real time C/C++ systems, later moving to Java (and never looked back). Within the Java world, Shay has worked on a propriety implementation of a distributed rule engine(RETE) server, your typical Java based web projects, and messaging based projects within the financial industry. Currently, Shay is a System Architect at GigaSpaces, GigaSpaces provides a single platform for end-to-end scalability of high performance and stateful distributed applications. GigaSpaces’ unique approach enables developers to Write their business logic Once and then seamlessly Scale out the application linearly Anywhere.

ElasticSearch相关资料

转载于:https://my.oschina.net/apdplat/blog/397148

The Future of Compass ElasticSearch相关推荐

  1. ElasticSearch启动报错future versions of Elasticsearch will require Java 11; your ---ElasticSearch工作笔记030

    future versions of Elasticsearch will require Java 11; your Java version from [/opt/softs/jdk1.8.0_1 ...

  2. ElasticSearch 提示 future versions of Elasticsearch will require Java 11解决方法

    错误提示:future versions of Elasticsearch will require Java 11; your Java version from [C:Program FilesJ ...

  3. 实时分布式搜索引擎比较(senseidb、Solr、elasticsearch)

    1 1. Solr 1.1 Features 1.2 Pros & Cons 1.3 References 2 2. Senseidb 2.1 Features 2.2 Pros & ...

  4. python在线考试系统设计csdn下载_一种通用的网页相似度检测算法

    如果我们需要在海量的结构未知的网页库中找到和指定的网页相似度比较高的一些网页,我们该怎么办呢?本文提出的"一种通用的网页相似度检测算法"就是专门解决这个问题. 算法如下: 1.提取 ...

  5. 计算ITEYE博文在百度的收录与排名情况

    rank是一个seo工具,用于分析网站的搜索引擎收录排名. 计算ITEYE博文在百度的收录与排名情况的代码来自rank项目:https://github.com/ysc/rank/blob/maste ...

  6. 整合篇:零基础学习与使用ElasticSearch

    目录 1.ES的概述 2.ES的安装 3.ES的命令 4.手把手快速入门 4.1.一切为了搜索 4.2.索引员工文档 4.3.检索员工文档 4.4.轻量搜索数据 4.5.含表达式搜索 4.6.更复杂的 ...

  7. 【Elasticsearch】玩转 Elasticsearch 7.8 的 SQL 功能

    1.概述 转载并且补充:https://elasticsearch.cn/article/687' 2.实战 2.1 构建数据 首先,我们创建一条数据: POST twitter/doc/ {&quo ...

  8. 没有比这个更详细的Elasticsearch教程

    Elasticsearch Elasticsearch简介与安装 什么是Elasticsearch? ​ ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全 ...

  9. (ES1)ElasticSearch+Kibana+Elasticsearch-analysis-ik系统环境搭建

    ElasticSearch简称ES,可以理解为提供分词快速检索的分布式数据库,和传统数据库不同,传统数据库只能模糊匹配关键字,比如搜索:java架构,传统数据库只能匹配字段里面包含:java架构的数据 ...

最新文章

  1. D - Fliptile POJ - 3279(翻转问题)
  2. GO学习第一天——环境搭建
  3. JS放在博客里面运行
  4. distinct 只针对一个字段
  5. 互联网1分钟 |0102
  6. 重建索引能释放掉字段因更改而产生额外列偏移量
  7. 【C++ grammar】对象和类(创建对象、对象拷贝、分离声明与实现)
  8. 升序排序中国_干货满满!6行python代码挑战展示2020下半年中国最娱乐的人气男明星人气排行榜top10!...
  9. jpa 生成uuid的主键_JPA注解主键生成策略-UUID
  10. 【报告分享】2020年B站UP主价值研究报告.pdf(附下载链接)
  11. android_dialog
  12. Linux基础命令及其常识
  13. 中国游戏2022趋势报告:6大潜力领域4大发展趋势 多家企业分析
  14. 来自太阳,爱情的故事,生存和欢乐的影子上升 - 免费节选
  15. VHDL实验二::半加器、一位和四位全加器(绘制原理图)
  16. 利用Matlab App Designer简单设计程序
  17. java线程栅栏_Java 多线程之栅栏-CyclicBarrier
  18. 购买计算机设备计入什么科目,企业购买设备计入什么会计科目?附会计分录
  19. 引入echarts 报错xAxis “0“ not found
  20. 跨平台备份工具Duplicati

热门文章

  1. python方法测试怀孕_在Python中测试私有方法(例外)
  2. autocad完全应用指南_2020版AutoCAD软件+操作教程+插件合集,限时3天领
  3. qpython3l使用手册_qpython3l怎么用
  4. linux升windows10,Windows 10免费升级计划的利与弊
  5. 调整样式_“寒来暑往”美国海军陆战队应季节调整迷彩样式的规定变化
  6. 20200221:在排序数组中查找元素的第一个和最后一个位置(leetcode34)
  7. 20191021:(leetcode习题)乘积小于K的子数组
  8. lodash是否是数组_lodash源码解析:for家族
  9. 应用实例_兴达奇智能燃烧控制器BMU460DP现场应用实例图
  10. ncl 多个单一时间文件合并成一个nc文件_iOS逆向--MachoO文件