Elastisearch相关

话说最近一直在搞关于Elasticsearch的东西。尼玛蓦然发现我好想和搜索还有大叔据真的搞到一块儿去了==#好吧,由于最近比较忙,所以这次先写个大概的概述好了。

ElasticSearch这玩意儿呢,主要是建立在lucene这个Full text index的java库上面的。其实基于这个Java库的其他的全文搜索引擎server还有很多,包括大名鼎鼎的Solr,基本属于发展很成熟啊,之类之类的,估计要说缺点的话就是商用的话需要付钱==#

不过Stackoverflow上关于各种Full text index的讨论有很多很多,包括对于Lucene, Solr, Sphinx, ElasticSearch的对比,ElasticSearch的作者也现身说法表述了一下他的好处,和Solr相比:

Superior distributed model和Easily for use.

也就是说,其实对于其他方面的主要功能而言,其实是大差不差的,而且可能很多时候Solr或许更加成熟一点。

然后就是一些专业术语的说明啦,如果你是对于Lucene有一定了解的话基本可以忽略了,因为貌似是差不多的(废话,人家都说了是基于Lucene的了好么)

1. Cluster

不多说,和所有分布式数据库一样。传说中的集群。由节点组成.

2. Node

组成Cluster的基本单位。一个Node就是一个ElasticSearch的实例。不一定是一个单独的server哦。。。可以联想一下为伪分布式的Hadoop……Node可以作为master,可以做Slave,也可以既不做master也不做slave,仅仅用来进行通信。master的选举过程和Amazon的dynamo比较相似,是一种p2p的gossip选举方式。不过貌似比那个还要简单一些。一个集群只能有一个master,所以你在同时启动多个节点的时候如果没有时间差就会产生脑裂的现象(亲眼观察到啊。。。尼玛和精神分裂是一个道理)。

Split Brain是ES目前的一个bug,到现在还没有解决的。

3. Shard

所谓的数据库分片是也。Shard的数量要大于等于node的数量,方便以后的scale~所以说~做事情得为以后掂量着点儿~

4. replica

不多说,副本。 一个primary shard可以有多个replica,用来保证HA


简单的使用了一下ES,在这边说,想要使用ES做底层数据库的话可以有两种方式,一种是java方式,调用ES正统的API进行Query之类的,另一种方式是使用JSON, 其实JSON才是比较推荐的方式。简单,又容易嵌入到web应用当中去。不过如果数据集比较大而且又是每天都会进行更新的话,建议参考ES的River系列插件的写法写插件上传数据,不然会很悲痛的。

其实ES还是一个正在发展的开源项目,有很多地方都还很不完善,比如说多中document类型的支持,不是他不想,而是他还没来得及做,而且社区现在还不够庞大,当然是相对于Solr而言。不过作为一个轻量级的解决方案是很不错的,而且尤其是不需要定义任何scheme的特点,其实还是很不错的,但是需要大量的DIY和良好的设计。

你可能感兴趣的:(Elastisearch相关)