狂神说ElasticSearch7.6.1学习笔记(上)

ElasticSearch概述

Elaticsearch,简称为es,es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别(大数据时代)的数据。es也使用java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。
据国际权威的数据库产品评测机构DB Engines的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。

ES和Solr

ES

Elasticsearch是一个实时分布式搜索和分析引擎。 它让你以前所未有的速度处理大数据成为可能。它用于全文搜索、结构化搜索、分析以及将这三者混合使用:

Solr简介

  • Solr是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化
  • Solr可以独立运行,运行在letty. Tomcat等这些Selrvlet容器中 , Solr 索引的实现方法很简单,用POST方法向Solr服务器发送一个描述Field及其内容的XML文档, Solr根据xml文档添加、删除、更新索引。Solr 搜索只需要发送HTTP GET请求,然后对Solr返回xml、json等格式的查询结果进行解析,组织页面布局。
  • Solr不提供构建UI的功能, Solr提供了一个管理界面,通过管理界面可以查询Solr的配置和运行情况。
  • Solr是基于lucene开发企业级搜索服务器,实际上就是封装了lucene.
  • Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交-定格式的文件,生成索引;也可以通过提出查找请求,并得到返回结果。

性能对比

  • 当单纯的对已有数据进行搜索时,Solr更快
  • 当实时建立索引时,Solr会产生io阻塞,查询性能较差,ElasticSearch具有明显的优势
  • 随着数据量的增加,Solr的搜索效率会变得更低,而ElasticSearch却没有明显的变化
  • 转变我们的搜索基础设施后从Solr ElasticSearch,我们看见一个即时~ 50x提高搜索性能!
    总结
  • es基本是开箱即用(解压就可以用!) ,非常简单。Solr安装略微复杂一丢丢!
  • Solr 利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。
  • Solr 支持更多格式的数据,比如JSON、XML、 CSV ,而Elasticsearch仅支持json文件格式。
  • Solr 官方提供的功能更多,而Elasticsearch本身更注重于核心功能,高级功能多有第三方插件提供,例如图形化界面需要kibana友好支撑
  • Solr 查询快,但更新索引时慢(即插入删除慢) ,用于电商等查询多的应用;
    ES建立索引快(即查询慢) ,即实时性查询快,用于facebook新浪等搜索。
    Solr是传统搜索应用的有力解决方案,但Elasticsearch更适用于新兴的实时搜索应用。
  • Solr比较成熟,有一个更大,更成熟的用户、开发和贡献者社区,而Elasticsearch相对开发维护者较少,更新太快,学习使用成本较高。

ElasticSearch安装

ES 安装

准备条件:使用Java开发,必须保证ElasticSearch的版本与Java的核心jar包版本对应!(Java环境保证没错 JDK1.8+)
windows 下安装:
下载地址:
历史版本:
在这里插入图片描述
bin 启动目录
config 配置目录
log4j2 日志配置文件
jvm.options java 虚拟机相关的配置(默认启动占1g内存,内容不够需要自己调整)
elasticsearch.ym1 elasticsearch 的配置文件! 默认9200端口!

lib 相关jar包
modules 功能模块
plugins 插件目录
ik 分词器

启动 双击bin ->elasticsearch.bat
启动完成后访问默认地址:localhost:9200
在这里插入图片描述

安装可视化界面elasticsearch-head

准备条件 安装elasticsearch-head需要安装nodejs
下载地址:

# 进入解压目录
cd elasticsearch-head
# 安装依赖
npm install
# 启动
npm run start
# 访问
http://localhost:9100/

在这里插入图片描述

如上图由于es端口为9200,而head端口9100会链接时出现跨域问题;因此需要配置跨域问题
在这里插入图片描述

# 配置跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

在这里插入图片描述
从上图中我们可以这样理解:

  • 索引看做“数据库”
  • 类型看作“表”
  • 文档看做“库中的数据(表中的行)”
  • head 可以看着可视化数据展示工具(不支持json,使用不方便),后面所有查询都在kibana中进行(可以理解为navicat)

安装kibana

简介:Kibana是一个针对ElasticSearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana ,可以通过各种图表进行高级数据分析及展示。Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard )实时显示Elasticsearch查询动态。设置Kibana非常简单。无需编码或者额外的基础架构,几分钟内就可以完成Kibana安装并启动Elasticsearch索引监测。
下载版本需要和elasticsearch版本对应
下载地址:
历史版本:

解压后启动
在这里插入图片描述
访问地址:localhost:5601
在这里插入图片描述
注意:
如果访问Kibana后台报错:

 log   [02:29:21.776] [info][plugins-service] Plugin "case" is disabled.
  log   [02:29:43.476] [info][plugins-system] Setting up [37] plugins: [taskManager,infra,licensing,siem,code,encryptedSavedObjects,timelion,features,security,usageCollection,metrics,canvas,apm_oss,translations,reporting,uiActions,data,navigation,share,newsfeed,kibana_legacy,management,dev_tools,status_page,inspector,expressions,visualizations,embeddable,advancedUiActions,dashboard_embeddable_container,eui_utils,home,spaces,cloud,apm,graph,bfetch]
  log   [02:29:43.481] [info][plugins][taskManager] Setting up plugin
  log   [02:29:43.550] [info][infra][plugins] Setting up plugin
  log   [02:29:43.552] [info][licensing][plugins] Setting up plugin
  log   [02:29:43.555] [info][plugins][siem] Setting up plugin
  log   [02:29:43.555] [info][code][plugins] Setting up plugin
  log   [02:29:43.556] [info][encryptedSavedObjects][plugins] Setting up plugin
  log   [02:29:43.558] [warning][config][encryptedSavedObjects][plugins] Generating a random key for xpack.encryptedSavedObjects.encryptionKey. To be able to decrypt encrypted saved objects attributes after restart, please set xpack.encryptedSavedObjects.encryptionKey in kibana.yml
  log   [02:29:43.567] [info][plugins][timelion] Setting up plugin
  log   [02:29:43.568] [info][features][plugins] Setting up plugin
  log   [02:29:43.569] [info][plugins][security] Setting up plugin
  log   [02:29:43.570] [warning][config][plugins][security] Generating a random key for xpack.security.encryptionKey. To prevent sessions from being invalidated on restart, please set xpack.security.encryptionKey in kibana.yml
  log   [02:29:43.571] [warning][config][plugins][security] Session cookies will be transmitted over insecure connections. This is not recommended.

页面出现
在这里插入图片描述

可以另开一个cmd窗口执行

curl -X DELETE http://localhost:9200/.kibana*

重启访问即可

可以使用kibana进行一写简单的测试;
在这里插入图片描述

了解ELK

ELK是Elasticsearch、Logstash、 Kibana三大开源框架首字母大写简称。市面上也被成为Elastic Stack。

  • 其中Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。
    像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,可见Elasticsearch提供的搜索能力确实强大,市面上很多时候我们简称Elasticsearch为es。
  • Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ )收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)。
  • Kibana可以将elasticsearch的数据通过友好的页面展示出来 ,提供实时分析的功能。
    市面上很多开发只要提到ELK能够一致说出它是一个日志分析架构技术栈总称 ,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据分析和收集的场景,日志分析和收集只是更具有代表性。并非唯一性。

收集清洗数据(Logstash) --> 搜索、存储(ElasticSearch) --> 展示(Kibana)

ElasticSearch核心概念

  • 索引 ~ 包多个分片
  • 字段类型(映射)~ 字段类映射(字段是整型,还说字符型…)
  • 文档
  • 分片(Lucene索引,倒排索引)

ElasticSearch是面向文档,关系行数据库和ElasticSearch客观对比!一切都是JSON!

Relational DBElasticSearch
数据库(database)索引(indices)
表(tables)types <慢慢会被弃用!>
行(rows)documents
字段(columns)fields

elasticsearch(集群)中可以包含多个索引(数据库) ,每个索引中可以包含多个类型(表) ,每个类型下又包含多个文档(行) ,每个文档中又包含多个字段(列)。

IK分词器(elasticsearch插件)

概述

分词:即把一段中文或者别的划分成一个个的关键字,我们在搜索时候会把自己的信息进行分词,会把数据库中或者索引库中的数据进行分词,然后进行一一个匹配操作,默认的中文分词是将每个字看成一个词(不使用用IK分词器的情况下),比如“我爱周杰伦”会被分为”我”,”爱”,”周”,”杰”,“伦” ,这显然是不符合要求的,所以我们需要安装中文分词器ik来解决这个问题。

IK提供了两个分词算法: ik_smartik_max_word ,其中ik_smart为最少切分, ik_max_word为最细粒度划分!

环境准备

在这里插入图片描述
在这里插入图片描述
测试发现都会把我爱周杰伦分开;怎么让其连在一起看成一个词呢?

自定义分词

elasticsearch目录/plugins/ik/config/IKAnalyzer.cfg.xml

在这里插入图片描述

  • 编写自己的词典
    在这里插入图片描述
  • 在上述的配置添加自己的词典
    在这里插入图片描述
  • 重启测试
    在这里插入图片描述
    自此ElasticSearch环境安装基本完成;可以进行相关一些列的测试了

创建索引为test并存入对象
在这里插入图片描述

在这里插入图片描述
取值
在这里插入图片描述
更新
在这里插入图片描述
在这里插入图片描述
删除
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值