ElasticSearch 是一个基于Lucene构建的开源的、分布式的、RESTful API 式的搜索服务器,是开源搜索平台的新成员,实时数据分析的神器,具备高可靠性,用于云计算,能够达到实时搜索且稳定,可靠的快速服务。
Elasticsearch 近几年发展迅猛,可以从以下几点便可明白elasticsearch所受的关注度是很高的。
- 2012年11月,Elasticsearch 获得1000万美元的融资
- 2013年02月,Elasticsearch获得2400万美元的融资
- 2013年初,GitHub摈弃了 Solr,投向了ElasticSearch的怀抱,来做PB级的搜索
实时分布式搜索和分析引擎
Elasticsearch是一个非常赞的实时分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。可以说Lucene是当今最先进,最高效的全功能开源搜索引擎框架,但是Lucene只是一个框架,要充分利用它的功能,你需要很高学习成本,因为Lucene确实非常复杂。而Elasticsearch使用Lucene作为内部引擎,在其基础上封装了功能强大的RESTful API,让你不需要了解背后复杂的逻辑,即可完成搜索。
elasticsearch 的数据模型
elasticsearch 的数据模型属于模式自由以及数据库是面向文档的,elasticsearch 的模型基于 JSON, 通过JSON,可以非常简单的表示半结构化的数据,大多数编程语言都会优先支持JSON数据的解析。
模式映射(Schema Mapping)
elasticsearch 是无模式的,你随便往里面扔一个JSON格式的文档,然后ES就可以自动的进行索引。 输入的内容如果是数字或者是时间类型,ES也自动的检测出来,并做相应的处理。
索引文档中的字段是可以设置BOOST值来影响打分,另外还可以使用不同的分析器(Analyzer)用来控制怎么分词,比如有些字段是需要进行分词的,但是有些则不一定,如此等等。elasticsearch允许你完全控制这些规则,最终将一个JSON文档映射到搜索引擎里面。并且可以按索引(Index)和按类型(Type)2种级别来进行设置。
例如:
获取数据(GETting Some Data)
每个索引的文档都必须要有一个唯一标识(在类型级别),在很多时候这是非常有用的,比如想去更新或者删除某一个索引文档,或者只是想拿一条索引数据来看一看。
那么只需用告诉elasticsearch,并指定文档的索引、类型、和id就可以拿回实际的索引文档了(该索引文档就是你创建索引的时候的生成的JSON格式的文档)。
下面用一个示例告诉大家,在Elasticsearch里是如何创建索引的:
解释下上面的请求URL地址分为3个部分,它们分别是:
索引创建好了,接下来就可以去获取了
获取索引是qixing318、类型是article、id为2的文档数据,如果数据存在则返回相应的数据,如果不存在则返回 miss,是不是很简单。