elaticsearch(1)

1.简介

Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

2.Solr

基于lucene的全文搜索服务器,提供了比lucene更加丰富的查询语句

Solr可以通过HTML页面管理,使用XML配置达到灵活性和适配性

灵活的插件体系

强大的数据导入功能

3.ElasticSearch与Solr

Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;

Solr 支持更多格式的数据:html、xml、csv,而 Elasticsearch 仅支持json文件格式;

Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供;

Solr查询快,但更新索引时慢,多用于电商查询多的应用。Elasticsearch建立索引块(查询慢),实时性查询快,多用于facebook、新浪等搜索

4.ES组成

索引---数据库

类型---表

文档---行/一条记录

ES集群中可以包含多个索引(数据库),每个索引中包含多个类型(表),每个类型又包含多个文档(行),每个文档中又包含了多个字段(列)。

文档:索引和搜索的最小单位

1.自我包含:一个文档包含字段和对应的值,也就是同时拥有key:value

2.层次型:一个文档中还包含一个文档,也就是一个复杂的实体逻辑

3.灵活结构:文档不依赖预先定义的模型,在关系型数据库中,我们需要提前定义字段才能使用,而在ES中,我们可以忽略字段,也可以新添加字段。

类型:文档是类型的逻辑容器,就像关系型数据库中表是行的容器。

类型中对字段的定义是映射,ES中文档是无模式的,但是,当我们新增一个字段时,ES就会根据值猜他的类型,也有可能猜不对,最安全的方式就是提前定义好所需要的映射,这就和关系型数据库类似。

索引:是映射类型的容器。索引中存储了映射字段和其他设置,之后存储到各个分片上。

ES将索引划分为多个分片,每个分片可以在集群中的不同服务器上迁移。

elaticsearch(1)_第1张图片

一个集群至少有一个节点,节点代表ES进程,节点有多个索引,一个索引对应5个分片,每个分片有一个副分片,主分片和副分片不在同一节点下面。

每一个分片就是一个lucene索引(一个ES索引包含多个lucene索引),一个包含倒排索引的文件目录,倒排索引的结构使得ES在不扫描全部文件的情况下,就能说明文档包含的特定关键字。

倒排索引(lucene索引底层):

就是按照文章关键字,对应的文档建立索引,根据关键字就可以查询对应的文档,无需查明每个文档。

elaticsearch(1)_第2张图片

 

 

你可能感兴趣的:(java)