铜仁市论坛

首页 » 分类 » 分类 » JavaWeb项目架构之Elastics
TUhjnbcbe - 2021/5/22 23:47:00
北京皮肤病医院那家好 http://m.39.net/pf/a_6171978.html

云栖君导读:Elasticsearch(ES)是一个基于Lucene的开源搜索引擎,它不但稳定、可靠、快速,而且也具有良好的水平扩展能力,是专门为分布式环境设计的。

特性

安装方便:没有其他依赖,下载后安装非常方便;只用修改几个参数就可以搭建起来一个集群

JSON:输入/输出格式为JSON,意味着不需要定义Schema,快捷方便

RESTful:基本所有操作(索引、查询、甚至是配置)都可以通过HTTP接口进行

分布式:节点对外表现对等(每个节点都可以用来做入口);加入节点自动均衡

多租户:可根据不同的用途分索引;可以同时操作多个索引

集群

其中一个节点就是一个ES进程,多个节点组成一个集群。一般每个节点都运行在不同的操作系统上,配置好集群相关参数后ES会自动组成集群(节点发现方式也可以配置)。集群内部通过ES的选主算法选出主节点,而集群外部则是可以通过任何节点进行操作,无主从节点之分(对外表现对等/去中心化,有利于客户端编程,例如故障重连)。

分片

ES是一个分布式系统,我们一开始就应该以集群的方式来使用它。它保存索引时会选择适合的“主分片”(PrimaryShard),把索引保存到其中(我们可以把分片理解为一块物理存储区域)。分片的分法是固定的,而且是安装时候就必须要决定好的(默认是5),后面就不能改变了。

既然有主分片,那肯定是有“从”分片的,在ES里称之为“副本分片”(ReplicaShard)。副本分片主要有两个作用:

高可用:某分片节点挂了的话可走其他副本分片节点,节点恢复后上面的分片数据可通过其他节点恢复

负载均衡:ES会自动根据负载情况控制搜索路由,副本分片可以将负载均摊

索引

RESTful

这个特性非常方便,最关键的是ES的HTTP接口不只是可以进行业务操作(索引/搜索),还可以进行配置,甚至是关闭ES集群。下面我们介绍几个很常用的接口:

/_cat/nodes?v:查集群状态

/_cat/shards?v:查看分片状态

/index/index/{type}/_search?pretty:搜索

v是verbose的意思,这样可以更可读(有表头,有对齐),_cat是监测相关的APIs,/_cat?help来获取所有接口。index和index和{type}分别是具体的某一索引某一类型,是分层次的。我们也可以直接在所有索引所有类型上进行搜索:/_search。

日志处理

前面介绍了那么多Elasticsearch简介和特性,大多源自官方介绍和百度,其实写这篇文章的目的就是如何基于Elasticsearch构建网站日志处理系统,通过数据同步工具等一些列开源组件来快速构建一个日志处理系统,后面附项目Demo雏形,并不完善,初步成型中。

开发环境

JDK1.7、Maven、Eclipse、SpringBoot1.5.9、elasticsearch2.4.6、Dubbox2.8.4、zookeeper3.4.6、Vue、Iview

版本介绍

spring-boot-starter-parent-1.5.9.RELEASE、spring-data-elasticsearch-2.1.9.RELEAS、elasticsearch-2.4.6(5.0+以上需要依赖JDK8)

截止年1月22日,ElasticSearch目前最新的已到6.1.2,但是spring-boot的更新速度远远跟不上ElasticSearch更新的速度,目前spring-boot支持的最新版本是elasticsearch-2.4.6。

服务说明

使用本地ElasticSearch服务(application-dev.properties)

使用远程ElasticSearch服务(application-dev.properties)

需要自行安装ElasticSearch,注意ElasticSearch版本尽量要与JAR包一致。

下载

1
查看完整版本: JavaWeb项目架构之Elastics