`

一、分布式 搜索引擎 ElasticSearch 前世今生

 
阅读更多

ElasticSearch 是一个基于Lucene构建的开源的、分布式的、RESTful API 式的搜索服务器,是开源搜索平台的新成员,实时数据分析的神器,具备高可靠性,用于云计算,能够达到实时搜索且稳定,可靠的快速服务。

 

分布式实时搜索引擎ElasticSearch的前世今生

 

Elasticsearch 近几年发展迅猛,可以从以下几点便可明白elasticsearch所受的关注度是很高的。

 

  1. 2012年11月,Elasticsearch 获得1000万美元的融资
  2. 2013年02月,Elasticsearch获得2400万美元的融资
  3. 2013年初,GitHub摈弃了 Solr,投向了ElasticSearch的怀抱,来做PB级的搜索

 

Elasticsearch的优点

 

实时分布式搜索和分析引擎

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种级别来进行设置。

例如:

 

//创建索引
$ curl -XPUT http://localhost:9200/qixing318

//创建Mapping
$ curl -XPUT http://localhost:9200/qixing318/user/_mapping -d '{
    "properties" : {
        "name" : { "type" : "string" }
    }
}'

 

获取数据(GETting Some Data)

每个索引的文档都必须要有一个唯一标识(在类型级别),在很多时候这是非常有用的,比如想去更新或者删除某一个索引文档,或者只是想拿一条索引数据来看一看。

那么只需用告诉elasticsearch,并指定文档的索引、类型、和id就可以拿回实际的索引文档了(该索引文档就是你创建索引的时候的生成的JSON格式的文档)。

 

下面用一个示例告诉大家,在Elasticsearch里是如何创建索引的:

 

$ curl -XPUT http://localhost:9200/qixing318/article/2 -d '{
    "user": "kimchy",
    "post_date": "2009-11-15T14:12:12",
    "message": "You know, for Search"
}'

解释下上面的请求URL地址分为3个部分,它们分别是:

 

 

http://localhost:9200 (Host) 启动的elasticsearch服务主机地址,监听端口为9200
qixing318 (Index) 创建索引的名称是qixing318,当然你可以根据自己的需求自行设置索引名称
article (Type) 类型
2 (ID) 对象id号,比如你插入mysql时的主健ID值

 

 

索引创建好了,接下来就可以去获取了

$ curl -XGET http://localhost:9200/qixing318/article/2

获取索引是qixing318、类型是article、id为2的文档数据,如果数据存在则返回相应的数据,如果不存在则返回 miss,是不是很简单。

 

文档出自:http://www.qixing318.com/article/distributed-search-engine-elasticsearch-incarnations.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics