RuoYiplus:索引库ElasticSearch的核心概念原理

1、ElasticSearch

ElasticSearch是个开源的分布式的搜索引擎,它能够近乎实时的存储、检索数据;java

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

ElasticSearch提供javaAPI,使用者能够经过javaAPI调用,可是7.0之后不会提供普通javaAPI,须要使用高级APIrest-high-level调用。github

2、Lucene

说到ES就不得不提Lucene,Lucene是一个开放源代码的全文检索引擎工具包,它不是一个完整的搜索引擎,并且一个全文搜索引擎的架构。redis

Lucene之因此比传统的关系型数据库检索的效率高,由于其使用的事倒排索引,这种索引表中的每一项都包括一个属性值和具备该属性值的各记录的地址。spring

 

3、ElasticSearch和Solr的区别

   1)Solr创建索引时候,搜索效率降低,实时搜索效率不高,es实时搜索效率高数据库

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

     3)Solr支持更多格式的数据,好比JSON、XML、CSV,而Elasticsearch仅支持json文件格式。后端

     4)Solr官方提供的功能更多,而Elasticsearch自己更注重于核心功能,高级功能多有第三方插件提供设计模式

     5)Solr在传统的搜索应用中表现好于Elasticsearch,但在处理实时搜索应用时效率明显低于Elasticsearch。mybatis

     6)Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用

7)Solr每次变更数据时会重新更新索引库, Elasticsearch彻底支持 Apache Lucene 的接近实时的搜索。

4、ElasticSearch基本概念

cluster

-表明一个集群,集群中有多个节点,其中有一个为主节点,这个主节点经过选举产生的,主节点仅是对内部来讲。es的一个概念是去中心化,字面意思就是没有中心节点,这是对于集群外部来讲的,从外部看来你能够与任何一个节点通讯。

-主节点的职责是负责管理集群的状态(节点的发现和删除),包括管理分片的状态,副本的状态

-主须要同一个网段内启动多个es,默认状况下es会自动发现同一个网段相同cluster.name的节点 自动组成集群(实际为防止脑裂,通常会禁止自动发现)

-集群的查看状态:http://127.0.0.1:9200/_cluster/health?pretty

shards

-表明索引分片,es能够把一个完成的索引分红多个分片,这样的好处能够把一个索引分布到不用的节点上,构成分布式搜索。分片的数量只能在索引建立前指定,而且不能修改。默认分片有5个inde.number_of_shards: 5

-能够建立索引时指定例如:

curl -XPUT -H "Content-Type:application/json" http://127.0.0.1:9200/yanbin -d '{"settings":{"number_of_shards":3}}'

replicas

-表明索引副本,es能够给索引设置副本,副本的做用一是提升系统的容错性,当某个节点某个分片损坏或丢失时能够从副本恢复。二是提升查询效率,es会自动对搜索请求作负载。默认分片有1个inde.number_of_replicas: 5

curl -XPUT -H "Content-Type:application/json" http://127.0.0.1:9200/yanbin/_settings -d '{"settings":{"number_of_replicas":3}}' 注:PUT添加/更新 POST添加_settings 修改设置项

recovery

-表明数据恢复或数据从新分布,es有节点退出宕机或者添加时会好久负载对索引分片重新分配,挂掉的节点从新启动时也会进行数据恢复。

gateway

-表明es索引的持久化存储方式,es默认是先把索引放到内存中,当内存满了的时候再持久化到硬盘。当这个es集群关闭或者重启时就会从gateway中读取索引数据。gateway支持多种存储,默认本地磁盘文件,hadoop 中hdfs 等

discovery.zen

-表明es自动发现同网段节点机制,它先经过广播须要存在的节点,再经过多播协议进行节点之间通讯,同时支持点对点的交互。

-若是集群不一样网段节点,禁用自动发现机制 discovery.zen.ping.multicast.enabled:false

设置新节点在启动时可以被发现的主节点列表。 discovery.zen.ping.multicast.unicast.hosts:["192.169.1.1","192.169.1.2"]

transport:

-表明内部节点或集群与客户端的交互方式,默认内部使用的TCP协议进行交互。同时支持https(json),merchand,kafka,zeroMq等

settings修改索引库默认配置

mapping索引库的索引字段名称和数据进行定义

RuoYiPlus开源

本项目由 SMP 多商户权限管理系统 + API 接口服务组成,是在开源项目 RuoYi4.0(若依) 的基础上升级调整的微服务体系,项目基于 SpringBoot2.x,springcloudG 版本 eureka、hystrix、feign、config、gateway 微服务架构,集成 redis、tk.mybatis、lombok、各类设计模式等,是可选性后台管理系统或后端接口服务。

源码地址

加入社区

输入图片说明