### RabbitMQ从入门到集群架构:
https://zhuanlan.zhihu.com/p/375157411 可靠性高 ### Kafka从入门到精通:
https://zhuanlan.zhihu.com/p/375578641 吞吐量

今日内容概要

  • Elasticsearch介绍
  • Elasticsearch安装配置

内容详细

1、Elasticsearch介绍

# Elasticsearch产生背景
-大规模数据的检索
-redis集群---》很多数据---》分片保存到不同节点上---》解决存储---》检索数据:速度 # es:应对如下问题
-1 大量数据存储---》只要机器硬盘够,就能存储
-2 数据安全性---》分片和副本保证几个节点挂了,数据也是完整的
-3 大数据量的检索---》倒排索引
-4 单点故障问题---->分片和副本,某个节点挂了,数据完整 # es是什么:
Elasticsearch 是一个基于Lucene的分布式搜索和分析引擎
ES是elaticsearch简写, Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。 Elasticsearch使用Java开发,在Apache许可条款下开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便 使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API来隐藏Lucene的复杂性,使得全文检索变得简单 设计用途:用于分布式全文检索,通过HTTP使用JSON进行数据索引,速度快 # 名词解释
-Apache:
-Apache开源协议:开源标准,大家写了一些开源软件,贡献给它,它们有人负责给维护
-Kafka:顶级开源项目
-es
-echars:顶级开源项目
-tomcat
-spark
-Apache公司(基金会):组织
-Apache服务器,跟nginx是一个东西 -Lucene
-java中的搜索引擎,但是只能给java用,比较复杂,需要懂搜索引擎的知识
-python想做搜索引擎-基于lucene,进行封装,做成web服务,提供restful接口,现在无论任何语言,只要发送http的resful请求,携带参数,就能完成搜素 # Lucene与Elasticsearch关系
1)Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的 2)Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单 # Elasticsearch 与 solr
1)Solr是Apache Lucene项目的开源企业搜索平台。其主要功能包括全文检索、命中标示、分面搜索、动态聚类、数据库集成,以及富文本(如Word、PDF)的处理。 2)Solr是高度可扩展的,并提供了分布式搜索和索引复制。Solr是最流行的企业级搜索引擎,Solr4 还增加了NoSQL支持。 3)Solr是用Java编写、运行在Servlet容器(如 Apache Tomcat 或Jetty)的一个独立的全文搜索服务器。 Solr采用了 Lucene Java 搜索库为核心的全文索引和搜索,并具有类似REST的HTTP/XML和JSON的API。 4)Solr强大的外部配置功能使得无需进行Java编码,便可对 其进行调整以适应多种类型的应用程序。Solr有一个插件架构,以支持更多的高级定制 # Elasticsearch 与 Solr 的比较总结:
# solr 也是一个用java开发的企业级搜索引擎
# 传统企业喜欢用solr,互联网企业喜欢用es 二者安装都很简单
Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能
Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式
Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提供
Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch
Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用 # Elasticsearch 核心概念---》es架构
-Cluster:集群
ES可以作为一个独立的单个搜索服务器。不过,为了处理大型数据集,实现容错和高可用性,ES可以运行在许多互相合作的服务器上。这些服务器的集合称为 集群 -Node:节点
形成集群的每个服务器称为节点。 -Shard:分片
当有大量的文档时,由于内存的限制、磁盘处理能力不足、无法足够快的响应客户端的请求等,一个节点可能不够。这种情况下,数据可以分为较小的分片。每个分片放到不同的服务器上。
当你查询的索引分布在多个分片上时,ES会把查询发送给每个相关的分片,并将结果组合在一起,而应用程序并不知道分片的存在。即:这个过程对用户来说是透明的 -Replia:副本
为提高查询吞吐量或实现高可用性,可以使用分片副本。
副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。
当主分片丢失时,如:该分片所在的数据不可用时,集群将副本提升为新的主分片
# 注意区分主从 -全文检索:
全文检索就是对一篇文章进行索引,可以根据关键字搜索,类似于mysql里的like语句。
全文索引就是把内容根据词的意义进行分词,然后分别创建索引,例如”今日是周日我们出去玩” 可能会被分词成:“今天“,”周日“,“我们“,”出去玩“ 等token,这样当你搜索“周日” 或者 “出去玩” 都会把这句搜出来 # es和关系型数据库的比较
mysql es
数据库 索引
表 类型
建表语句 mapping(映射)建表
数据行 文档
字段 字段
增删查改 get,put,post,delete... # ELK---》不懂开发的运维---》不能扩展功能
ELK = elasticsearch + Logstash + kibana elasticsearch:后台分布式存储以及全文检索
logstash: 日志加工、“搬运工”
kibana:数据可视化展示 ELK架构为数据分布式存储、可视化查询和日志解析创建了一个功能强大的管理链。 三者相互配合,取长补短,共同完成分布式大数据处理工作 ELK 是Logstash、Elasticsearch、Kibana的集合。其中 ELasticsearch 负责日志分析和存储,Logstash负责日志收集,Kibana 负责界面展示。 # EFK
EFK是Elasticsearch,FileBeat,Kibana的集合。与ELK不同的是,FileBeat替代了Logstash,负责日志收集 Logstash 数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置 Filebeat 轻量级数据收集引擎。基于原先 Logstash-fowarder 的源码改造出来。换句话说:Filebeat就是新版的 Logstash-fowarder,也会是 ELK Stack 在 shipper 端的第一选择 # Elasticsearch 特点和优势
1)分布式实时文件存储,可将每一个字段存入索引,使其可以被检索到。 2)实时分析的分布式搜索引擎。
分布式:索引分拆成多个分片,每个分片可有零个或多个副本。集群中的每个数据节点都可承载一个或多个分片,并且协调和处理各种操作
负载再平衡和路由在大多数情况下自动完成。 3)可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。也可以运行在单台PC上 4)支持插件机制,分词插件(中文分词)、同步插件、可视化插件(kibana)等 # 国内外优秀案例
github 2013年全部换成es作为搜索引擎 # 我们应用场景
只要涉及到大数据量搜索,全文检索,都可以使用 # Elasticsearch索引到底能处理多大数据
单一索引的极限取决于存储索引的硬件、索引的设计、如何处理数据以及你为索引备份了多少副本。 通常来说,一个Lucene索引(也就是一个elasticsearch分片,一个es索引默认5个分片)不能处理多于 21亿篇文档,或者多于 2740亿的唯一词条。但达到这个极限之前,我们可能就没有足够的磁盘空间了!
当然,一个分片如何很大的话,读写性能将会变得非常差

2、Elasticsearch安装前奏

# 用java写的---》java运行在 jvm上

# 解释型语言:python,php,nodejs,javascrip
-源代码运行在解释器之上 -解释器可以有不同平台的解释器---》天然跨平台 -python----》一般咱们不把它编译成可执行文件---》python放烟火--》给你女朋友---》你女朋友想看到烟火---》装python解释器---》运行python程序 -python代码做成可执行文件---》pipinstaller---》本质原理--》把python代码+解释器打包到一个可执行文件中---》很大,经常报错,第三方包打不进去 -加密Python项目代码之把Django或Flask项目打包成exe
https://zhuanlan.zhihu.com/p/430490285 # 编译型语言:go,java,c,c++,c#
-在win上编译完成---》发给你女朋友---》在win双击运行---》看到了 -把源代码--》编译成可执行文件---》运行在操作系统之上---》区分平台---》在linux平台下编译的就不能运行在mac平台 -redis--->c的源代码---》make---》编译---》可执行文件---》win -java---》一处编码处处运行---》跨平台---》统治了编程语言排行榜20多年 -java的编译过程不是编译成可执行文件---》中间状态 .class ,jar,war包---》不能直接运行在操作上---》运行在jvm上(java虚拟机)---》jvm可以有不通平台的---》实现了java跨平台 -不支持跨平台编译--->要编译win 的需要到win下编译,编译mac的要到mac编译 -go语言 2009年---》2015年后---》才火---》支持跨平台编译---》win下可以编译出mac的可执行文文件 # jetbrains---》人家收费---》ide
# 要运行java程序,必须至少要有jvm
jvm很吃内存---》java程序耗内存---》pycharm用java写的-->jvm打包进去了---》吃内存 # vscode
轻量级---》vs需要装很多插件--》把所有插件装齐了---》也卡了 # java体系
-java se:java基础,变量,面向对象,io,并发,网络 -java ee:javaWeb开发,定制了一些标准 jsp,serverlet,tomcat,现在java工程师基本上都是javaEE工程---》javaweb开发被spring一统天下了---》java工程师就是spring工程师 -java me:手机开发----》山寨机--》java应用---》java开发的---》现在没有了 -安卓开发---》安卓推出的时候---》google 选择哪个语言开发?----》java开发吧---》java虚拟机---》安卓手机上的虚拟机--》运行java开发的程序---》安卓手机卡 -java基础+安卓api---》调包侠
-谷歌:kotlin语言---》专门用来做安卓开发
-Dart语言,flutter平台
-ios:object-c swift语言---》做ios开发----》发明这个语言的人从苹果离职了去了facebook
-开发安卓用java开发---》长达十几年的官司
-谷歌 跟 java-sun公司---》后来被【甲骨文】oracle收购了---》java收费
-java开源的---》内置很多包---》后来新增的,甲骨文开发的---》收钱--》授权
-拿着java开源代码---》编译成jdk---》缺新增的包---》openjdk,毕昇jdk,oracle-jdk
-开发安卓用的java里面有些包,java公司开发出来的,没有授权给你,你没给我钱啊,告你--->> 十年---》谷歌输了赔很多钱----》谷歌赢了,不侵权 -java开始没落---》市场份额一点点被蚕食---》python,go。。。
-java在大数据领域---》es,spark,kafka---》java开发的 -web 中间件 ---》go发力了
-开发块,执行速度要开---》go---》执行效率高---》语法简单---》go ---》go新语言,坑很多
-追求稳定---》java当之无愧---》银行核心项目,医院核心项目,政府核心项目---》传统软件公司 -互联网公司---》go,python jdk:java开发环境---》内置包---》java开发,装它,分平台
jre:java运行环境---》java程序运行环境
jvm:java虚拟机---》字节码文件运行在虚拟机上
# 三者向下包含 # 要运行es---》java开发的---》jdk---》版本 java 18----》公司里用的多还是 java 8 # es最低支持 jdk 8

3、Elasticsearch安装配置

# 注册才能下载
jdk10:https://www.oracle.com/java/technologies/java-archive-javase10-downloads.html jdk8:https://www.oracle.com/java/technologies/downloads/#java8-windows
## 清华镜像开源站 也可以下载 Adoptium 11
https://mirrors.tuna.tsinghua.edu.cn/Adoptium/11/jdk/x64/windows/
https://mirrors.tuna.tsinghua.edu.cn/Adoptium/11/jre/x64/windows/ # 一路下一步安装即可 # 检查java是否安装成功
java -version # es 下载安装 ---》有些第三方插件---》可能最新不支持
-暂时选7.5.0版本
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7-5-0
-官网:https://www.elastic.co/cn/downloads/elasticsearch ,选择相应版本下载即可
-找到相应版本,下载,解压,运行即可 # 启动es
-去es的安装路径的bin路径下,输入 elasticsearch 启动文件 # 在浏览器访问:127.0.0.1:9200 表示安装成功
{
"name" : "MS-TRNZUSSEFDLG",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "p9VZBCKUTm68YE5pn-Idkw",
"version" : {
"number" : "7.5.0",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "e9ccaed468e2fac2275a3761849cbee64b39519f",
"build_date" : "2019-11-26T01:06:52.518245Z",
"build_snapshot" : false,
"lucene_version" : "8.3.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}

Elasticsearch(es)介绍与安装的更多相关文章

  1. 第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装

    第三百五十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装 elasticsearch(搜索引擎)介绍 ElasticSearch是一个基于 ...

  2. 三十八 Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)介绍以及安装

    elasticsearch(搜索引擎)介绍 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口.Elasticse ...

  3. ElasticSearch入门介绍之安装部署(二)

    散仙,在上篇文章对ElasticSearch整体入门作了个介绍,那么本篇我们来看下,如何安装,部署es,以及如何安装es的几个比较常用的插件. es的安装和部署,是非常简单方便的,至少这一点散仙在es ...

  4. 批量搞机(二):分布式ELK平台、Elasticsearch介绍、Elasticsearch集群安装、ES 插件的安装与使用

    一.分布式ELK平台 ELK的介绍: ELK 是什么? Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用 ELK!ELK! ...

  5. Elasticsearch介绍及安装部署

    本节内容: Elasticsearch介绍 Elasticsearch集群安装部署 Elasticsearch优化 安装插件:中文分词器ik 一.Elasticsearch介绍 Elasticsear ...

  6. ElasticSearch入门-基本概念介绍以及安装

    Elasticsearch基本概念 Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与传统关系型数据库类似. 传统关系型数据库与Elasticsearch进行概念对 ...

  7. Elasticsearch介绍和安装与使用

    转载:https://blog.csdn.net/weixin_42633131/article/details/82902812 1.Elasticsearch介绍和安装 1.1.简介1.1.1.E ...

  8. Elasticsearch介绍和安装

    Elasticsearch介绍和安装 软件包: 链接:https://pan.baidu.com/s/1O_C0JQGfF8sC_OtcCCLNoQ 提取码:3iai 1.1.简介 1.1.1.Ela ...

  9. ElasticSearch学习总结(二):ES介绍与架构说明

    本文主要从概念以及架构层面对Elasticsearch做一个简单的介绍,在介绍ES之前,会先对ES的"发动机"Lucene做一个简单的介绍 1. Lucene介绍 为了更深入地理解 ...

随机推荐

  1. 彻底搞懂CSS层叠上下文、层叠等级、层叠顺序、z-index

    前言 最近,在项目中遇到一个关于CSS中元素z-index属性的问题,具体问题不太好描述,总结起来就是当给元素和父元素色设置position属性和z-index相关属性后,页面上渲染的元素层级结果和我 ...

  2. 我的python学习记_03

    数据类型 python中的数据类型包括:1.数字类型number:整型int(即整数) 浮点型float(小数形式,整数的话后面加".0") 布尔型(判断正确与否) 复数型(com ...

  3. uni-app中遇到的跳转问题

    最近在使用uni-app时,遇到的一个问题,使用uni.navigateTo跳转时在H5端是可以的,在小程序端报 fail webview count limit exceed 这个错,解决办法如下: ...

  4. 用 rollup + gulp 造个轮子,别说还挺香

    前戏 我是16年入了前端的坑,17年知道了gulp和rollup这两个玩意儿.由于那时webpack势头很猛,便一直没有正眼瞧过它一眼. 直到20年进了一家小公司,做了很多类似的小项目,相同的代码拷来 ...

  5. Servlet 标准下载地址

    Servlet 标准下载地址 java 技术标准开发社区 https://jcp.org/ 3.0 https://jcp.org/aboutJava/communityprocess/mrel/js ...

  6. Java学习day29

    线程礼让(yield):礼让线程,让当前正在执行的线程暂停,但是不阻塞:让线程从运行状态转为就绪状态:让CPU重新调度,礼让不一定成功 合并线程(join):待此线程执行完毕后,再执行其他线程,其他线 ...

  7. 介绍关于MSSQL当前行中获取到上一行某列值的函数 Coalesce

    记录一个小知识点,在SQLGrid中,在当前行显示上一行某列值的函数** Coalesce **的使用. 显示上一行是有啥子用? 经常有人百度SQL上一行减下一行的写法,但是没几个文章是用最简单直接的 ...

  8. 华为麒麟团队力造的Python,整整26G

    华为团队力造的Python,下面链接自取 https://docs.qq.com/doc/DRkZvRkxvb292c2Vz

  9. UML 类之间的关系

    统一建模语言(Unified Modeling Language,UML) 作用:对软件系统进行说明 如果说软件系统是一本小说的话,那么 UML 就是将小说动漫化. 也许你看过这本小说,但是时间一长, ...

  10. docker:registry

    存放docker镜像(mage)的地址,可供人上传下载镜像包: 下载 docker search whalesay --搜索whalesay镜像,该镜像用命令行的形式画了个鲸鱼并说了句话 docker ...