elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。

前言

  • 公司老总对我说,需要用到elasticsearch,这不,就抓紧过来学了,然后记录下学习过程。
    先学习下载和安装吧。

  • 送上官网,里面啥都有,还是比较好找的,从这里下载elasticsearch和kibana。https://www.elastic.co/cn/elasticsearch/

  • 使用版本 elasticsearch6.4.2 、kibana6.4.2

  • 博客目录

  1. elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
  2. elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
  3. elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
  4. elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务

一、elasticsearch

1. 了解一下

  1. Elasticsearch是一个分布式文档存储。Elasticsearch不会将信息存储为列数据的行,而是存储已序列化为JSON文档的复杂数据结构。当集群中有多个Elasticsearch节点时,存储的文档将分布在集群中,并且可以从任何节点立即访问。

  2. 存储文档时,将在1秒内几乎实时地对其进行索引和完全搜索。Elasticsearch使用称为倒排索引的数据结构,该结构支持非常快速的全文本搜索。反向索引列出了出现在任何文档中的每个唯一单词,并标识了每个单词出现的所有文档。

  3. 索引可以认为是文档的优化集合,每个文档都是字段的集合,这些字段是包含数据的键值对默认情况下,Elasticsearch对每个字段中的所有数据建立索引,并且每个索引字段都具有专用的优化数据结构。例如,文本字段存储在倒排索引中,数字字段和地理字段存储在BKD树中。使用按字段数据结构组合并返回搜索结果的能力使Elasticsearch如此之快。

  4. Elasticsearch还具有无模式的能力,这意味着无需显式指定如何处理文档中可能出现的每个不同字段即可对文档建立索引。启用动态映射后,Elasticsearch自动检测并向索引添加新字段。这种默认行为使索引和浏览数据变得容易-只需开始建立索引文档,Elasticsearch就会检测布尔值,浮点数和整数值,日期和字符串并将其映射到适当的Elasticsearch数据类型。

  5. 但是,最终,您比Elasticsearch更了解您的数据以及如何使用它。您可以定义规则来控制动态映射,并显式定义映射以完全控制字段的存储和索引方式。
    定义自己的映射使您能够:
    区分全文字符串字段和精确值字符串字段

    • 执行特定于语言的文本分析
    • 优化字段以进行部分匹配
    • 使用自定义日期格式
    • 使用无法自动检测到的 数据类型,例如geo_point和geo_shape
  6. Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架。

  7. Elasticsearch是基于Apache Lucene的搜索服务器。它由Shay Banon开发并于2010年发布。现在是由Elasticsearch BV负责维护。其最新版本是:7.2.x。

  8. Elasticsearch是一个实时分布式和开源的全文搜索和分析引擎。 它可以从RESTful Web服务接口访问,并使用模式少JSON(JavaScript对象符号)文档来存储数据。它是基于Java编程语言,这使Elasticsearch能够在不同的平台上运行。使用户能够以非常快的速度来搜索非常大的数据量。

2. Elasticsearch的特性

Elasticsearch的一般特性如下:

  1. Elasticsearch可扩展高达PB级的结构化和非结构化数据
  2. Elasticsearch可以用来替代MongoDB和RavenDB等做文档存储
  3. Elasticsearch使用非标准化来提高搜索性能
  4. Elasticsearch是受欢迎的企业搜索引擎之一,目前被许多大型组织使用,如Wikipedia,The Guardian,StackOverflow,GitHub等。
  5. Elasticsearch是开放源代码,可在Apache许可证版本2.0下提供。

3. Elasticsearch的主要概念

Elasticsearch的主要概念如下 -

  1. 节点- 它指的是Elasticsearch的单个正在运行的实例。单个物理和虚拟服务器容纳多个节点,这取决于其物理资源的能力,如RAM,存储和处理能力。

  2. 集群 - 它是一个或多个节点的集合。 集群为整个数据提供跨所有节点的集合索引和搜索功能。

  3. 索引 - 它是不同类型的文档和文档属性的集合。索引还使用分片的概念来提高性能。 例如,一组文档包含社交网络应用的数据。

  4. 类型/映射 - 它是共享同一索引中存在的一组公共字段的文档的集合。 例如,索引包含社交网络应用的数据,然后它可以存在用于用户简档数据的特定类型,另一类型可用于消息的数据,以及另一类型可用于评论的数据。

  5. 文档 - 它是以JSON格式定义的特定方式的字段集合。每个文档都属于一个类型并驻留在索引中。每个文档都与唯一标识符(称为UID)相关联。

  6. 碎片 - 索引被水平细分为碎片。这意味着每个碎片包含文档的所有属性,但包含的数量比索引少。水平分隔使碎片成为一个独立的节点,可以存储在任何节点中。主碎片是索引的原始水平部分,然后这些主碎片被复制到副本碎片中。

  7. 副本 - Elasticsearch允许用户创建其索引和分片的副本。 复制不仅有助于在故障情况下增加数据的可用性,而且还通过在这些副本中执行并行搜索操作来提高搜索的性能。

4. Elasticsearch的优点

  1. Elasticsearch是基于Java开发的,这使得它在几乎每个平台上都兼容。
  2. Elasticsearch是实时的,换句话说,一秒钟后,添加的文档可以在这个引擎中搜索得到。
  3. Elasticsearch是分布式的,这使得它易于在任何大型组织中扩展和集成。
  4. 通过使用Elasticsearch中的网关概念,创建完整备份很容易。
  5. 与Apache Solr相比,在Elasticsearch中处理多租户非常容易。
  6. Elasticsearch使用JSON对象作为响应,这使得可以使用不同的编程语言调用Elasticsearch服务器。
  7. Elasticsearch支持几乎大部分文档类型,但不支持文本呈现的文档类型。

5. Elasticsearch的缺点

Elasticsearch在处理请求和响应数据方面没有多语言和数据格式支持(仅在JSON中可用),与Apache Solr不同,Elasticsearch不可以使用CSV,XML等格式。
Elasticsearch也有一些伤脑的问题发生,虽然在极少数情况下才会发生。

6. Elasticsearch和RDBMS之间的比较

在Elasticsearch中,索引是类型的集合,因为数据库是RDBMS(关系数据库管理系统)中表的集合。每个表都是行的集合,就像每个映射都是JSON对象的Elasticsearch集合一样。

Elasticsearch 关系数据库
索引 数据库
碎片 碎片
映射
字段 字段
JSON对象 元组

二、版本对应

查了很多资料,知道了一个坑,也就是版本一定要是对应的,elasticsearch与kibana之间,elasticsearch与jdk的版本之间。springboot整合elasticsearch时的版本对应。在这里我就整理一下。

1. jdk与es版本对应

先看官网吧官网上的版本对应https://www.elastic.co/cn/support/matrix#matrix_jvm
基本上都是jdk1.8都支持。

2. kibana与es版本对应

这个对应就简单了,版本一致即可,否则有可能打不开,链接不上。

3. springboot整合elasticsearch

官网给的版本要求:
在这里插入图片描述
红框这栏指的是: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

  1. 下载解压后目录如图所示:
    在这里插入图片描述
  2. 进入到bin目录下,双击运行 elasticsearch.bat 文件
    在这里插入图片描述
  3. 当出现 started 时,则运行成功。
    在这里插入图片描述
  4. 打开谷歌浏览器,输入http://localhost:9200,出现如下图所示,则启动成功
    在这里插入图片描述
  5. 然后 打开 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: "*"

然后重启即可。

三、运行kibana

  1. 下载解压如下图所示:
    在这里插入图片描述
  2. 进入到 bin 目录下,然后双击 kibana.bat 文件即可。
    在这里插入图片描述
  3. 当出现如下图中的 http://localhost:5601时,则运行成功,前提是需要运行 elasticsearch。
    在这里插入图片描述
  4. 谷歌输入网址如下所示:
    在这里插入图片描述

四、head插件

1. head插件简介

elasticsearch-head被称为是弹性搜索集群的web前端,head插件主要是用来和elastic Cluster交互的Web前端。

2. head插件历史

elasticsearch-head插件在0.x-2.x版本的时候是集成在elasticsearch内的,由elasticsearch的bin/elasticsearch-plugin来管理插件,可是从2.x版本跳到了5.x版本后,head就作用了一个独立的服务来运行了,脱离了elasticsearch的约束,所以相对来说,部署起来也比较繁琐了

3. chrome浏览器下的head插件安装

用chrome浏览器集成head插件,操作比较简单, 可再不用单独运行服务, 简化了head插件的安装.

4. 安装步骤

  1. 下载es-head.crx文件
    插件下载地址:
链接:https://pan.baidu.com/s/1wM8molAqhdYmM225npInyg 
提取码:m1ef
  1. 把下载好的es-head-master压缩后得到es-head.zip文件。
    然后进行解压得到es-head
    在这里插入图片描述
    点击右上角三个点->更多工具->扩展程序–打开右上角的开发者模式—加载已解压的扩展程序–上传刚才的es-head文件夹, 打开浏览器看右上角的es-head图标插件, 即安装成功
    在这里插入图片描述
  2. 打开head插件连接好es路径即可
    在这里插入图片描述
  3. 到此 elasticsearch-head安装成功。

五、elasticsearch-ik分词器

  1. 百度 elasticsearch-ik 进入到GitHub页面,我这里也直接送上 GitHub页面https://github.com/medcl/elasticsearch-analysis-ik
    然后拉到下面 看一下版本对应:
    在这里插入图片描述
  2. 然后回到上面,点击右边的+ 134 releases,去下载与elasticsearch、kibana同一个版本的软件。
    在这里插入图片描述
  3. 这里下载6.4.2版本
    在这里插入图片描述
    在这里插入图片描述
  4. 然后,将压缩文件 放到 elasticsearch 解压目录下的 plugins/,然后解压,会出来好多jar包和文件,然后新建文件夹,命名为 ik,将所有解压的文件放到ik文件夹中即可。
    如下:
    在这里插入图片描述
    在这里插入图片描述
  5. 然后重启 elasticsearch和 kibana,出现如下图则ik分词器加载成功。
    在这里插入图片描述
  6. 进入到bin目录下的cmd命令行模式,输入命令 elasticsearch-plugin list,来查看加载进来的所有插件。
    在这里插入图片描述
  7. 到目前为止,elasticsearch-ik 插件安装成功。
  8. 打开kibana进行测试,如下所示,则 ik 分词器 安装成功。
    ik_smart: 最少切分
    在这里插入图片描述
    ik_max_word 为最细粒度划分!
    在这里插入图片描述

六、总结

到目前为止,elasticsearch、kibana、Google-head插件、elasticsearch-ik安装成功。

相关实践学习
使用阿里云Elasticsearch体验信息检索加速
通过创建登录阿里云Elasticsearch集群,使用DataWorks将MySQL数据同步至Elasticsearch,体验多条件检索效果,简单展示数据同步和信息检索加速的过程和操作。
ElasticSearch 入门精讲
ElasticSearch是一个开源的、基于Lucene的、分布式、高扩展、高实时的搜索与数据分析引擎。根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr(也是基于Lucene)。 ElasticSearch的实现原理主要分为以下几个步骤: 用户将数据提交到Elastic Search 数据库中 通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据 当用户搜索数据时候,再根据权重将结果排名、打分 将返回结果呈现给用户 Elasticsearch可以用于搜索各种文档。它提供可扩展的搜索,具有接近实时的搜索,并支持多租户。
相关文章
|
20天前
|
数据可视化 Java Windows
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
本文介绍了如何在Windows环境下安装Elasticsearch(ES)、Elasticsearch Head可视化插件和Kibana,以及如何配置ES的跨域问题,确保Kibana能够连接到ES集群,并提供了安装过程中可能遇到的问题及其解决方案。
Elasticsearch入门-环境安装ES和Kibana以及ES-Head可视化插件和浏览器插件es-client
|
1天前
|
JSON Java 网络架构
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
这篇文章介绍了如何使用Spring Boot整合REST方式来搭建和操作Elasticsearch服务。
21 4
elasticsearch学习四:使用springboot整合 rest 进行搭建elasticsearch服务
|
1天前
|
自然语言处理 搜索推荐 关系型数据库
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
这篇文章是关于Elasticsearch全文搜索引擎的学习指南,涵盖了基本概念、命令风格、索引操作、分词器使用,以及数据的增加、修改、删除和查询等操作。
elasticsearch学习六:学习 全文搜索引擎 elasticsearch的语法,使用kibana进行模拟测试(持续更新学习)
|
1天前
|
Web App开发 JavaScript Java
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
这篇文章是关于如何使用Spring Boot整合Elasticsearch,并通过REST客户端操作Elasticsearch,实现一个简单的搜索前后端,以及如何爬取京东数据到Elasticsearch的案例教程。
20 0
elasticsearch学习五:springboot整合 rest 操作elasticsearch的 实际案例操作,编写搜索的前后端,爬取京东数据到elasticsearch中。
|
1天前
|
自然语言处理 Java 网络架构
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
这篇文章是关于如何自定义Elasticsearch的ik分词器配置以满足特定的中文分词需求。
16 0
elasticsearch学习三:elasticsearch-ik分词器的自定义配置 分词内容
|
1天前
|
自然语言处理 Java Maven
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
这篇博客介绍了如何使用Spring Boot整合TransportClient搭建Elasticsearch服务,包括项目创建、Maven依赖、业务代码和测试示例。
elasticsearch学习二:使用springboot整合TransportClient 进行搭建elasticsearch服务
|
1月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
2月前
|
数据可视化 Docker 容器
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
这篇文章提供了通过Docker安装Elasticsearch和Kibana的详细过程和图解,包括下载镜像、创建和启动容器、处理可能遇到的启动失败情况(如权限不足和配置文件错误)、测试Elasticsearch和Kibana的连接,以及解决空间不足的问题。文章还特别指出了配置文件中空格的重要性以及环境变量中字母大小写的问题。
一文教会你如何通过Docker安装elasticsearch和kibana 【详细过程+图解】
|
2月前
|
JSON 自然语言处理 数据库
Elasticsearch从入门到项目部署 安装 分词器 索引库操作
这篇文章详细介绍了Elasticsearch的基本概念、倒排索引原理、安装部署、IK分词器的使用,以及如何在Elasticsearch中进行索引库的CRUD操作,旨在帮助读者从入门到项目部署全面掌握Elasticsearch的使用。
|
2月前
|
Ubuntu Oracle Java
如何在 Ubuntu VPS 上安装 Elasticsearch
如何在 Ubuntu VPS 上安装 Elasticsearch
24 0