今天面试官听到了ES和Solor组件的区别,脑子里只是在项目中实际应用,不知道他的基础实现和实现原理。 今天试着总结一下这两个组件的基本概念和优缺点。

ElasticSearch

ElasticSearch是基于Lucene的搜索服务器。 提供基于rest风格的web界面的分布式多用户功能全文搜索引擎。 Elasticsearch由Java开发,在Apache许可条款下作为开源发布,是目前流行的企业级搜索引擎。 专为云计算而设计,可实现实时搜索、稳定、可靠、快速、安装易用。

基本概念1.索引(Index)

ElasticSearch将数据存储在一个或多个索引(index )中。 用SQL领域的术语来类比,索引就像一个数据库,可以将文档写入索引或从索引中读取文档。 此外,还可以在ElasticSearch内部使用Lucene向索引写入数据或从索引检索数据。2. 类型(Type)

每个文档都有相应类型(type )的定义。 这样,用户可以在一个索引中存储多个文档类型,并使用不同类型的文档提供类型的映射3.文档(Document)

“文档”(document )是ElasticSearch的主要实体。 在使用ElasticSearch的所有案例中,他们最终都可以总结为文档的搜索。 文档位于字段4.映射(mapping)

在将所有文档写入索引之前进行分析,然后如何将输入的文本分割为词条,过滤掉哪些词条称为映射。 一般由用户自己定义规则。5.分片(shards)

表示索引切片,es可以将一个完整的索引分割为多个切片。 其优点是,可以将一个大索引拆分为多个,并分布在不同的节点上。 配置分布式搜索。 切片的数量只能在索引前指定,在索引后不能更改。 5.X默认情况下,片6.副本(replicas)

表示索引副本。 es可以设置多个索引的副本。 副本的作用之一是提高系统的容错能力,使节点片损坏或丢失时可以从副本中恢复。 二是提高es的查询效率。 es自动平衡搜索请求的负载。7.接近实时(NRT)

Elasticsearch是一个接近实时的搜索平台。 也就是说,从对文档建立索引到可以进行搜索,请参阅8.集群(cluster)

表示集群。 群集中有多个节点(node ),其中包含可在选举中生成的主节点。 主节点是集群内部的东西。 es的概念之一是去中心化,顾名思义就是没有中心节点。 这对集群外部来说是有利的。 这是因为从外部来看,es集群在逻辑上是整体,与任一节点的通信与整个es集群的通信等价。9.通信(Transport)

表示es内部节点或群集与客户端的交互方式,缺省内部使用tcp协议进行交互,包括http协议(json格式)、thrift、servlet、memcached和zeroMQ等传输节点间通信端口默认值: 9300-9400 10.网关(gateway)

表示es索引的持久化存储方式,es默认将索引存储在内存中,当内存已满时持久化到硬盘中。 关闭并重新启动此es群集后,将从网关读取索引数据。 es支持多种类型的网关,包括本地文件系统(默认)、分布式文件系统、Hadoop HDFS和亚马逊s3云存储服务。Solor

Solr是一个独立的企业级搜索APP应用服务器,可为外界提供类似Web-service的API界面。 用户可以通过http请求向搜索引擎服务器提交一定格式的XML文件并生成索引; 也可以在Http Get操作中发出搜索请求,以获得XML/Json格式的结果。 它是用Java5开发的,基于Lucene。

…更新后…