本篇文章给大家谈谈2021导航网站源码分享,以及简洁导航网站源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
1、Elasticsearch是什么
elasticsearch是一款开源的分布式搜索、存储、分析引擎;它目前的时效为近实时性的。Solar也是顶级的开源搜索引擎,也是基于lucene;elasticsearch与Solar相比安装更加简单,对于一些复杂的搜索支持更好,在大数据量下,elasticsearch的性能更好,现在被很多公司大量的使用。
我们可以看到数据库搜索引擎排名已经很高了https://db-engines.com/en/ranking
2、Elasticsearch发展
2.1Elasticsearch发展史
2004年,shaybanon基于lucene开发了compass。
2010年,shaybanon重构了compass,取名为elasticsearch,使其支持分布式和水平扩展。
2012年,ElasticsearchBV公司被创建,围绕Elasticsearch及相关软件提供商业服务和产品。
2015年,Elasticsearch公司更名为Elastic.
Lucene是一个高性能的搜索引擎库,它提供索引数据和搜索数据的功能,内部非常复杂,elasticsearch利用了lucene的高性能,封装了它的复杂性,对外可以提供rest接口,不同语言的应用都可以调用。
轶事:
2004年,shaybanon失业了,准备给他厨师老婆做一个食谱的搜索引擎,如果直接使用Lucene很难,所以他把使用lucene抽象了一下,并开源了,开发者可以直接在程序里使用compass来进行搜索,2010年的时候,它已经重构了compass,取名为elasticsearch,支持分布式和水平扩展。
2.2Elasticsearch重要版本
Elastic的版本维护政策维护当前主要版本的最新次要版本,以及上一个主要版本的最新次要版本,例如7.10.2,7主版本,10为次要版本,2为修复bug的版本。它的具体的版本政策可以查看(https://www.elastic.co/cn/support/eol),elasticsearch主要版本特性如下:
在实际生产中推荐采用7.x,官方做了很多优化,性能更好,功能更强大。
3、Elasticsearch应用场景
Elastic公司围绕着elasticsearch构建一整套生态系统,适用了很多热门的使用场景
3.1Elastic生态圈
2013年logstash被收购,同年kibana加入elastic公司,后续它陆续收购了beat、prealert(机器学习)等公司,将其纳入到elastic生态圈。
beats,轻量数据采集器,可收集文件、网络包等数据,它们安装在目标服务器作为代理,转发数据到logstash或elasticsearch上。X-Pack,商业套件,提供了一些增值服务,有些组件也开源了。
3.2使用场景
网站搜索设计了丰富的api来提供搜索服务,github、stackoverflow等网站的搜索都是基于elasticsearch。日志将分散的日志,集中化存储到elasticsearch上。日志管理一般分为:日志收集,格式化,检索,风险告警。数据库同步通过某种同步机制将数据库某个表的数据同步到elasticsearch上,然后提供搜索服务。指标分析提供了分组查询、top查询、排序、相关度打分,可以进行数据分析
4、Elasticsearch整体架构
4.1整体架构图
如上图所示,elasticsearch整体的功能划分:
restfulapi,表示提供rest风格的api来实现编程何管理Transport,网络传输模块,支持http,thrift等主流协议,默认tcpScripting,脚本语言,支持使用groovy、painless等脚本语言3rdplugin,支持第三方插件Indexmodule索引文档、searchmodule,搜索文档River,支持接入其它数据源Jmx,监控Discovery,服务发现模块Lucenedirectory,底层存储基于lucene实现Gateway,可以持久化到本地或者其它文件系统
4.2基本概念
开发视角:
文档可搜索的最小单位,我们向elasticsearch存储的一条数据,就是一个文档。每个文档都有一个id,可以自己指定,也可以让elasticsearch生成。索引索引是文档的容器,一类文档的集合。可以对文档元数据进行定义,比如名称、类型等。在物理上,索引的数据分布在分片上。Type在7.0以前,一个索引可以定义多个type,7.0版本后,type废除了,只有一个type为“_doc”。
系统视角:
集群一个elasticsearch集群由多个节点构成,它的分布式架构支持存储水平扩容,并且依靠副本可用性也很高。节点一个节点就是一个elasticsearch实例,即一个java进程。节点根据功能可以划分多种角色,比如主节点、数据节点、协调节点、ingest节点等。默认一个节点这些角色都承担。分片为了解决数据水平扩展,通过分片将数据分散到集群的节点上。一个索引分片数的设计需要提前做好评估,太大和太小都不好,具体怎么评估,后续的文章会来探讨。
5、Elasticsearch集群搭建
5.1Elasticsearch安装
安装java8环境,7.0后的elasticsearch版本,内置了java环境下载elasticsearch二进制文件(7.10.2)https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-10-2启动elasticsearch集群(3节点)启动命令:bin/elasticsearch-Enode.name=node0-Ecluster.name=mylocalcluster-Epath.data=node0_databin/elasticsearch-Enode.name=node1-Ecluster.name=mylocalcluster-Epath.data=node1_databin/elasticsearch-Enode.name=node2-Ecluster.name=mylocalcluster-Epath.data=node2_data接口查看状态节点的状态(http://localhost:9200){&34;:&34;,//节点名称&34;:&34;,//集群名称&34;:&34;,&34;:{&34;:&34;,&34;:&34;,&34;:&34;,&34;:&34;,&34;:&34;,&34;:false,&34;:&34;,&34;:&34;,&34;:&34;},&34;:&34;}集群的状态(http://localhost:9200/_cat/nodes)127.0.0.1317811cdhilmrstw*node0//*表示是主节点127.0.0.1337810cdhilmrstw-node1127.0.0.133789cdhilmrstw-node2集群的健康状态(http://localhost:9200/_cat/nodes){&34;:&34;,&34;:&34;,//集群状态&34;:false,&34;:3,//节点数&34;:3,//数据节点数&34;:0,&34;:0,&34;:0,&34;:0,&34;:0,&34;:0,&34;:0,&34;:0,&34;:0,&34;:100.0}安装kibana来管理elasticsearch下载kibana安装包https://www.elastic.co/cn/downloads/past-releases34;http://localhost:9200&34;http://localhost:9201&34;http://localhost:9202&34;zh-CN&34;name&34;xiaoming&34;age”:12\n}
注意post(自动生成id)、put(可以指定Id。如果id已经存在报错)效果是不一样的
查询文档
GET/user/_doc/2
更多的api可以查看官方文档:
https://www.elastic.co/guide/en/elasticsearch/reference/7.1/docs.html
6、总结
本篇文章先是介绍了elasticsearch的发展历史以及重大版本说明,知道7.x版本以后已经不支持自定义type了。接着介绍了elascitc公司生态圈以及elasticsearch的使用场景,知道了elasticsearch主要用于全文检索、日志等热门的场景中。然后通过一个elasticsearch集群搭建和相关组件的安装,快速上手了下文档基础操作。最后对elasticsearch整体功能、集群、节点、分片等主要概念做了一些简单说明,这样我们对elasticsearch有了大概的了解。后面的文章会对elasticsearch的功能和核心原理进行进一步探讨。
文章导航
类别
标题
发布
Redis
Redis(一):单线程为何还能这么快?
己发布
Redis(二):内存模型及回收算法
2021.10.22
Redis(三):持久化
2021.10.27
Redis(四):主从同步
即将上线
Redis(五):集群搭建
即将上线
Redis(六):实战应用
即将上线
Elasticsearch
Elasticsearch:概述
本文章
Elasticsearch:核心
2021.10.25
Elasticsearch:实战
2021.10.29
Elasticsearch写入流程详解
即将上线
Elasticsearch查询流程详解
即将上线
Elasticsearch集群一致性
即将上线
Lucene的基本概念
即将上线
Elasticsearch部署架构和容量规划
即将上线
RocketMQ
RocketMQ—NameServer总结及核心源码剖析
2021.11.01
RocketMQ—深入剖析Producer
即将上线
Broker—启动流程源码解密
即将上线
Broker—接受消息处理流程解密
即将上线
Tomcat源码分析
Tomcat(一):项目结构及架构分析
即将上线
Tomcat(二):启动关闭流程分析
即将上线
Tomcat(三):应用加载原理分析
即将上线
Tomcat(四):网络请求原理分析
即将上线
Tomcat(五):嵌入式及性能调优
即将上线
Nacos
Nacos项目结构及架构分析
即将上线
Nacos服务注册源码解析
即将上线
Nacos配置管理源码解析
即将上线
Nacos2.0版本优化功能解析
即将上线
Netty
计算机网络&nio核心原理
即将上线
详细解读kafka是如何基于原生nio封装网络通信组件的?
即将上线
netty初识之核心组件介绍
即将上线
源码解析netty服务端,端口是如何拉起来的?新连接接入又如何处理?
即将上线
深入netty中各种事件如何在pipeline中传播的?
即将上线
网络编程中拆包粘包是什么?kafka以及netty是如何解决的?
即将上线
深入解读netty中最为复杂的缓存分配是如何进行的?
即将上线
源码分析netty、kafka、sentinel中不同时间轮实现方式以及细节
即将上线
尝试从上帝角度对比kafka&netty中的性能优化,各种设计模式的丰富运用
即将上线
Netty在Rocketmq中的实践,RocketMq的消息协议解读
即将上线
关注IT巅峰技术,私信作者,获取以下2021全球架构师峰会PDF资料。
好了,文章到此结束,希望可以帮助到大家。