赞
踩
公司老总对我说,需要用到elasticsearch,这不,就抓紧过来学了,然后记录下学习过程。
先学习下载和安装吧。
送上官网,里面啥都有,还是比较好找的,从这里下载elasticsearch和kibana。https://www.elastic.co/cn/elasticsearch/
使用版本 elasticsearch6.4.2 、kibana6.4.2
博客目录
Elasticsearch是一个分布式文档存储
。Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构
。当集群中有多个Elasticsearch节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。
存储文档时,将在1秒内
几乎实时地对其进行索引和完全搜索。Elasticsearch使用称为倒排索引
的数据结构,该结构支持非常快速的全文本搜索。反向索引列出了出现在任何文档中的每个唯一单词,并标识了每个单词出现的所有文档。
索引可以认为是文档的优化集合,每个文档都是字段的集合,这些字段是包含数据的键值对
。默认情况下,Elasticsearch对每个字段中的所有数据建立索引,并且每个索引字段都具有专用的优化数据结构。
例如,文本字段存储在倒排索引中,数字字段和地理字段存储在BKD树中。使用按字段数据结构组合并返回搜索结果的能力使Elasticsearch如此之快。
Elasticsearch还具有无模式的能力,这意味着无需显式指定如何处理文档中可能出现的每个不同字段即可对文档建立索引。启用动态映射后,Elasticsearch自动检测并向索引添加新字段。这种默认行为使索引和浏览数据变得容易-只需开始建立索引文档,Elasticsearch就会检测布尔值,浮点数和整数值,日期和字符串并将其映射到适当的Elasticsearch数据类型。
但是,最终,您比Elasticsearch更了解您的数据以及如何使用它。您可以定义规则来控制动态映射,并显式定义映射以完全控制字段的存储和索引方式。
定义自己的映射使您能够:
区分全文字符串字段和精确值字符串字段
Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。
Elasticsearch是基于Apache Lucene的搜索服务器。它由Shay Banon开发并于2010年发布。现在是由Elasticsearch BV负责维护。其最新版本是:7.2.x。
Elasticsearch是一个实时分布式和开源的全文搜索和分析引擎。 它可以从RESTful Web服务接口访问,并使用模式少JSON(JavaScript对象符号)文档来存储数据。它是基于Java编程语言,这使Elasticsearch能够在不同的平台上运行。使用户能够以非常快的速度来搜索非常大的数据量。
Elasticsearch的一般特性如下:
PB级的结构化和非结构化数据
。替代MongoDB和RavenDB等做文档存储
。非标准化来提高搜索性能
。Elasticsearch的主要概念如下 -
节点
- 它指的是Elasticsearch的单个正在运行的实例。单个物理和虚拟服务器容纳多个节点,这取决于其物理资源的能力,如RAM,存储和处理能力。
集群
- 它是一个或多个节点的集合。 集群为整个数据提供跨所有节点的集合索引和搜索功能。
索引
- 它是不同类型的文档和文档属性的集合。索引还使用分片的概念来提高性能。 例如,一组文档包含社交网络应用的数据。
类型/映射
- 它是共享同一索引中存在的一组公共字段的文档的集合。 例如,索引包含社交网络应用的数据,然后它可以存在用于用户简档数据的特定类型,另一类型可用于消息的数据,以及另一类型可用于评论的数据。
文档
- 它是以JSON格式定义的特定方式的字段集合。每个文档都属于一个类型并驻留在索引中。每个文档都与唯一标识符(称为UID)相关联。
碎片
- 索引被水平细分为碎片。这意味着每个碎片包含文档的所有属性,但包含的数量比索引少。水平分隔使碎片成为一个独立的节点,可以存储在任何节点中。主碎片是索引的原始水平部分,然后这些主碎片被复制到副本碎片中。
副本
- Elasticsearch允许用户创建其索引和分片的副本。 复制不仅有助于在故障情况下增加数据的可用性,而且还通过在这些副本中执行并行搜索操作来提高搜索的性能。
Elasticsearch在处理请求和响应数据方面没有多语言和数据格式支持(仅在JSON中可用
),与Apache Solr不同,Elasticsearch不可以使用CSV,XML等格式。
Elasticsearch也有一些伤脑的问题发生,虽然在极少数情况下才会发生。
在Elasticsearch中,索引是类型的集合,因为数据库是RDBMS(关系数据库管理系统)中表的集合。每个表都是行的集合,就像每个映射都是JSON对象的Elasticsearch集合一样。
Elasticsearch | 关系数据库 |
---|---|
索引 | 数据库 |
碎片 | 碎片 |
映射 | 表 |
字段 | 字段 |
JSON对象 | 元组 |
查了很多资料,知道了一个坑,也就是版本一定要是对应的,elasticsearch与kibana之间,elasticsearch与jdk的版本之间。springboot整合elasticsearch时的版本对应。在这里我就整理一下。
先看官网吧官网上的版本对应https://www.elastic.co/cn/support/matrix#matrix_jvm
基本上都是jdk1.8都支持。
这个对应就简单了,版本一致即可,否则有可能打不开,链接不上。
官网给的版本要求:
红框这栏指的是:Elasticsearch安装版本(windows安装版本或Linux按照版本)
最新因为项目需要elasticsearch,采用今天搞了好久,项目启动就报如下错误:
org.elasticsearch.transport.NodeDisconnectedException: [][127.0.0.1:9300][cluster:monitor/nodes/liveness] disconnected
找了好久以为是配置问题,最后终于明白原来是版本不统一。
我的项目用的spring boot 1.5.x
所以安装了elasticsearch-2.3.2.zip
elasticsearch.bat
文件http://localhost:9200
,出现如下图所示,则启动成功config/elasticsearch.yml
文件cluster.name: elasticsearch # 这个的名称为上图的cluster_name
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 20104
transport.host: 0.0.0.0
# 以下两个为 跨域设置
http.cors.enabled: true
http.cors.allow-origin: "*"
然后重启即可。
http://localhost:5601
时,则运行成功,前提是需要运行 elasticsearch。elasticsearch-head
被称为是弹性搜索集群的web前端,head插件主要是用来和elastic Cluster交互的Web前端。
elasticsearch-head插件
在0.x-2.x版本的时候是集成在elasticsearch内的,由elasticsearch的bin/elasticsearch-plugin来管理插件,可是从2.x版本跳到了5.x版本后,head就作用了一个独立的服务来运行了,脱离了elasticsearch的约束,所以相对来说,部署起来也比较繁琐了
用chrome浏览器集成head插件,操作比较简单, 可再不用单独运行服务, 简化了head插件的安装.
链接:https://pan.baidu.com/s/1wM8molAqhdYmM225npInyg
提取码:m1ef
es-head-master
压缩后得到es-head.zip
文件。es-head
点击右上角三个点->更多工具->扩展程序–打开右上角的开发者模式—加载已解压的扩展程序–上传刚才的es-head文件夹
, 打开浏览器看右上角的es-head图标插件, 即安装成功elasticsearch-ik
进入到GitHub页面,我这里也直接送上 GitHub页面https://github.com/medcl/elasticsearch-analysis-ik+ 134 releases
,去下载与elasticsearch、kibana同一个版本的软件。bin
目录下的cmd命令行模式,输入命令 elasticsearch-plugin list
,来查看加载进来的所有插件。到目前为止,elasticsearch、kibana、Google-head插件、elasticsearch-ik
安装成功。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。