本文介绍: ES是一个开源的高扩展分布式全文检索引擎,它可以近乎实时存储检索数据;本身扩展性很好,可以扩展到上百台服务器处理PB级别数据。Elasticsearch使用Java开发使用Lucene作为其核心实现所有索引搜索功能,但是它的目的是通过简单的RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单

一、环境

此次笔记使用运行环境以及软件版本

系统:WIN10

JDK版本:1.8

Elasticsearch版本:7.15.2

elasticsearchhead版本最新

IK分词器版本:7.15.2

Kibana版本:7.15.2

二、Elasticsearch基本知识

2.1 介绍

ES是一个开源的高扩展分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器处理PB级别的数据

Elasticsearch使用Java开发使用Lucene作为其核心实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene复杂性,从而让全文搜索变得简单

2.2 使用场景

(1)监听网站Nginx日志时时同步到ES,通过Kibana来分型日志是否存在问题服务器层面的监控

(2)监听Mysql日志,对日志进行监控检测,对于业务来说可以进行一些辅助分析

(3)用户行为数据埋点收集,提供大数据分析数据支持

(4)使用ES来构建网站全文检索引擎;

2.3 Elasticsearch 特点

(1)分布式的实时文件存储,每个字段都被索引并可被搜索;

(2)分布式的实时分析搜索引擎

(3)可弹性扩展到上百台服务器规模,处理PB级结构化或非结构化数据;

(4)开箱即用(安装即可使用),它提供了许多合理的缺省值,并对初学者隐藏复杂搜索引擎理论。只需很少的学习既可在生产环境中使用。

2.4 ElasticSearch核心概念:倒排索引

关系数据库 拿着文档单词 elasticSearch 拿着单词文档

elasticSearch可以包含多个索引(数据库),每个索引可以包含多个类型(表),每个类型可以包含多个文档(行),每个文档可以包含多个字段(列)

es面向文档的,一切都是json

关系型数据库elasticSearch对比  

关系型数据库 elasticSearch
数据库(database) 索引 indices
表(table) 类型 types
行(row) 文档 documents
字段(columns) fields
2.5 ElasticSearch基本概念

(1) Cluster

集群一个多个节点集合,它们共同保存您的整个数据,并提供跨所有节点的联合索引和搜索功能。群集由唯一名称标识默认情况下为“elasticsearch”。此名称很重要,因为如果节点设置为按名称加入群集,则该节点只能是群集的一部分

确保不要在不同的环境中重用相同的群集名称,否则很可能会导致节点加入错误的群集。例如,您可以使用loggingdevloggingstage以及loggingprod用于开发,预发和生产环境。

如果群集中只有一个节点,那么它是完全正常的。此外,您还可以拥有多个独立集群,每个集群都有自己唯一集群名称

(2) Node

节点是作为集群部分的单个服务器,存储数据并参与集群索引和搜索功能。就像集群一样,节点由名称标识默认情况下,该名称是在启动分配给节点的随机通用唯一标识符(UUID)。如果不需要默认值,可以定义所需的任何节点名称。此名称对于管理目的非常重要,您可以在其中识别网络哪些服务器与Elasticsearch集群中的哪些节点相对应。

可以将节点配置为按集群名称加入特定群集。默认情况下,每个节点都设置为加入一个名为cluster的集群elasticsearch,这意味着如果您在网络启动了许多节点并且假设它们可以相互发现,它们将自动形成并加入一个名为elasticsearch的集群。

在单个集群中,可以拥有任意数量的节点。此外,如果网络当前没有其他Elasticsearch节点正在运行,则默认情况下启动单个节点将形成一个名为elasticsearch的新单节点集群。

ElasticSearch本质上是一个分布式数据库,允许多台服务器协同工作每台服务器可以运行多个 ElasticSearch实例。单个 ElasticSearch实例称为一个节点(node)。一组节点构成一个集群(cluster)。

(3)Index

索引具有某些类似特征的文档集合

例如,可以给客户数据建立一个索引,给产品目录建立另一个索引或给订单数据的建立一个索引。

索引有一个名称标识(必须全部小写),此名称用于在对其中的文档执行索引,搜索,更新删除操作引用索引所用。

在单个群集中,您可以根据需要定义任意数量的索引。

ElasticSearch会索引所有字段,经过处理写入一个反向索引(Inverted Index)。查找数据的时候,直接查找该索引。所以,ElasticSearch数据管理的顶层单位就叫做 Index(索引)。它是单个数据库同义词。每个 Index (即数据库)的名字必须是小写。通过下面命令可以访问当前节点的所有 Index

curl -X GET 'http://localhost:9200/_cat/indices?v'

(4)Type

Type是一个逻辑意义上的分类或者叫分区,允许在同一索引中建立多个type本质是相当于一个过滤条件,高版本将会废弃type概念

Document 可以分组比如 weather 这个 Index 里面,可以按城市分组(北京和上海),也可以按气候分组(晴天和雨天)。这种分组就叫做 Type,它是虚拟逻辑分组,用来过滤 Document。

不同的 Type 应该相似结构schema),举例来说, id 字段不能在这个组是字符串,在另一个组是数值。这是与关系型数据库的表的一个区别。性质完全不同的数据(比如 productslogs应该存成两个 Index,而不是一个 Index 里面的两个 Type(虽然可以做到)。

下面的命令可以列出每个 Index 所包含的 Type。

curl 'localhost:9200/_mapping?pretty=true'

注意:Elastic 6.x 版只允许每个 Index 包含一个 Type,7.x 版将会彻底移除 Type。

(5)Document

Document是可以编制索引的基本信息单元例如,您可以为单个客户提供文档,为单个产品提供另一个文档,为单个订单提供另一个文档。该文档以JSON(JavaScript Object Notation表示,JSON是一种普遍存在互联网数据交换格式

在索引/类型中,可以根据需要存储任意数量的文档。

值得注意的是,尽管文档实际上驻留在索引中,但实际上必须将文档分配给索引中的一个类型(type)中。

Index 里面单条的记录称为 Document(文档)。许多条 Document 构成了一个 Index。同一个 Index 里面的 Document,不要求有相同的结构(scheme),但是最好保持相同,这样有利于提高搜索效率

Document 使用 JSON 格式表示如下所示

{
  "id": "000001",
  "name": "joshua317",
  "age": 28
}

(6)分片(Shards)

索引可能存储大量可能超过单个节点硬件限制的数据。例如占用1TB磁盘空间的十亿个文档的单个索引可能不适合单个节点的磁盘,或者可能太慢而无法单独从单个节点提供搜索请求

为了解决这个问题,Elasticsearch提供了将索引细分为多个称为分片功能创建索引时,只需定义所需的分片即可。每个分片本身都是一个功能齐全且独立的“索引”,可以托管在集群中的任何节点上。

分片很重要,主要有两个原因

(7)副本(Replicas

副本主要是针对分片(Shards)的复制,Elasticsearch中主分片可以拥有0个或多个的副本

副本分片的主要目的就是为了故障转移。

分片副本很重要,主要有两个原因

每个Elasticsearch分片都是Lucene索引。单个Lucene索引中可以包含最大数量的文档。截止LUCENE-5843,限制是2,147,483,519(= Integer.MAX_VALUE – 128)文档。您可以使用_cat/shardsAPI 监控分片大小

三、Elasticsearch-7.15.2安装

3.1 下载安装

访问地址Download Elasticsearch | Elastic

下载地址https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-windows-x86_64.zip

3.2 解压运行

解压自己的安装目录

目录文件作用bin脚本文件,包括 ES 启动 & 安装插件等等
config : elasticsearch.yml(ES 配置文件)、jvm.options(JVM 配置文件)、日志配置文件等等
JDK : 内置的 JDK,JAVA_VERSION="13.0.2"
lib : 类库
logs : 日志文件
modules : ES 所有模块,包括 X-packplugins : ES 已经安装的插件默认没有插件
data : ES 启动时候,会有该目录用来存储文档数据。该目录可以设置

运行,直接双击bin目录下面的 elasticsearch.bat 文件

注意:会出现下面的告警信息,主要说的是本机安装的jdk1.8版本不满足需要,Elasticsearch7.x所需要的jdk版本java11,可以忽略这个告警,当然也可以根据需要调整到java11的版本。

"warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME"
Future versions of Elasticsearch will require Java 11; your Java version from [C:MyProgramJavajdk1.8.0_281jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Future versions of Elasticsearch will require Java 11; your Java version from [C:MyProgramJavajdk1.8.0_281jre] does not meet this requirement. Consider switching to a distribution of Elasticsearch with a bundled JDK. If you are already using a distribution with a bundled JDK, ensure the JAVA_HOME environment variable is not set.
Warning: with JDK 8 on Windows, Elasticsearch may be unable to derive correct
  ergonomic settings due to a JDK issue (JDK-8074459). Please use a newer
  version of Java.
Warning: MaxDirectMemorySize may have been miscalculated due to JDK-8074459.
  Please use a newer version of Java or set MaxDirectMemorySize explicitly.
​

在elasticsearch7.x之后的版本, 已经集成自带jdk, 在根目录下的jdk文件夹这里需要修改elasticsearch-env.bat启动文件的配置内容, 设置系统使用elasticsearch自带jdk版本 在 bin/elasticsearch-env.bat 文件中找到关于JAVA_HOME的配置, 注释掉if…else判断的东西, 替换如下三行代码

把下面的代码

# now set the path to java
if [ ! -z "$ES_JAVA_HOME" ]; then
  JAVA="$ES_JAVA_HOME/bin/java"
  JAVA_TYPE="ES_JAVA_HOME"
elif [ ! -z "$JAVA_HOME" ]; then
  # fallback to JAVA_HOME
  echo "warning: usage of JAVA_HOME is deprecated, use ES_JAVA_HOME" >&2
  JAVA="$JAVA_HOME/bin/java"
  JAVA_TYPE="JAVA_HOME"
else
  # use the bundled JDK (default)
  if [ "$(uname -s)" = "Darwin" ]; then
    # macOS has a different structure
    JAVA="$ES_HOME/jdk.app/Contents/Home/bin/java"
  else
    JAVA="$ES_HOME/jdk/bin/java"
  fi
  JAVA_TYPE="bundled JDK"
fi

改为:

set JAVA="%ES_HOME%jdkbinjava.exe"
set JAVA_HOME="%ES_HOME%jdk"
set JAVA_TYPE=bundled jdk

然后重新启动。

启动成功后,会出现下面的信息

简单访问

四、elasticsearch-head插件安装

为了便于管理ES,可使用head插件,这是最初级的管理工具,在浏览器显示ES集群,索引等信息,十分简便好用

安装elasticsearch-head需要安装node和grunt

4.1 node下载并安装

node访问地址

Node.js

node下载地址

https://nodejs.org/dist/v16.13.0/node-v16.13.0-x64.msi

直接双击进行安装,安装完成后,可以通过 node -v 查看

)

4.2 elasticsearch-head下载并安装

访问地址

GitHub – mobz/elasticsearch-head: A web front end for an elastic search cluster

下载地址:

https://github.com/mobz/elasticsearch-head/archive/refs/heads/master.zip

解压 elasticsearch-headmaster到 elasticsearch的安装目录

4.3 安装grunt

grunt 是基于Node.js项目构建工具,可以进行打包压缩测试执行等等的工作head插件就是通过grunt启动。

命令行执行 npm install -g grunt-cli

4.4 安装依赖

在elasticsearch-headmaster目录下执行 npm install 安装依赖

4.5 修改elasticsearch-head-master配置

修改服务器监听地址,配置文件: Gruntfile.js

connect: {
			server: {
				options: {
					port: 9100,
					base: '.',
					keepalive: truehostname: '*'
				}
			}
		}
4.6 修改elasticsearch配置,重新启动

修改elasticsearch安装目录下的配置文件 config/elasticsearch.yml

# 设成0.0.0.0让任何人都可以访问,线上服务不要这样设置。
network.host: 0.0.0.0
http.port: 9200
# 解决elasticsearch-head 集群健康值: 未连接问题, 配置解决跨域, 否则es-head连接会跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
node.name: node-1
cluster.initial_master_nodes: ["node-1"]

注意:

(1)elasticsearch.yml文件的编码utf-8

(2)如果出现下面报错信息

node validation exception
[1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch.
bootstrap check failure [1] of [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

这个问题是由于配置的问题导致的, 修改配置文件即可解决,在elasticsearch.yml中配置node节点

node.name: node-1
cluster.initial_master_nodes: ["node-1"]

修改完配置后,重启elasticsearch服务

4.7 启动运行elasticsearch-head服务

在elasticsearch-head-master目录下执行 grunt server 命令

如果在PowerShell下以管理员身份执行 grunt server 下面错误

PS C:MyProgramelasticsearch-7.15.2-windowselasticsearch-head-master> grunt --version
grunt : 无法加载文件 C:Usersjoshua317AppDataRoamingnpmgrunt.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅
 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ grunt --version
+ ~~~~~
    + CategoryInfo          : SecurityError: (:) [],PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

需要执行下面命令,然后选择Y

set-ExecutionPolicy RemoteSigned

关闭PowerShel ,然后执行 get-ExecutionPolicy发现变成了RemoteSigned,就成功了

然后重新执行 grunt server 命令即可

4.8 访问elasticsearch-head服务

访问:Node Exporter

如果出现集群健康值:未连接,请查看Elasticsearch配置是否正确,Elasticsearch服务是否启动

五、IK分词器安装

在Elasticsearch中,使用较多的中文分词器是 elasticsearch-analysis-ik,这个是 es 的一个第三方插件代码托管在 GitHub 上:GitHub – medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.

注意:Elasticsearch的版本7.15.2,所以需要对应ik分词器插件版本应该也是7.15.2,也就是说IK分词器的版本要选择和Elasticsearch版本号一样

项目访问地址:GitHub – medcl/elasticsearch-analysis-ik: The IK Analysis plugin integrates Lucene IK analyzer into elasticsearch, support customized dictionary.

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

(1)安装方式

直接进入进入Elasticsearch安装目录的的bin目录下,打开命令行窗口执行命令即可

.elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

(2)安装方式

下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.2/elasticsearch-analysis-ik-7.15.2.zip

直接将elasticsearch-analysis-ik-7.15.2.zip文件拷贝到Elasticsearch安装目录的plugins目录下解压后并将elasticsearch-analysis-ik-7.15.2解压后的文件夹重命名为ik

重新运行bin/elasticsearch.bat重启,ik安装完成。

知道如何验证是否安装成功,可以先使用帮助命令 elasticsearch-plugin -h 查看可用的命令

C:MyProgramelasticsearch-7.15.2-windowsbin> ./elasticsearch-plugin -h
A tool for managing installed elasticsearch plugins

Commands
--------
list - Lists installed elasticsearch plugins
install - Install a plugin
remove - removes plugins from Elasticsearch

Non-option arguments:
command

Option             Description
------             -----------
-E <KeyValuePair>  Configure a setting
-h, --help         Show help
-s, --silent       Show minimal output
-v, --verbose      Show verbose output

所以我们可以使用 elasticsearch-plugin list 查看已安装得插件

C:MyProgramelasticsearch-7.15.2-windowsbin> ./elasticsearch-plugin list
ik

六、Kibana安装

Kibana 是一个 Elastic 公司推出的一个针对 es 的分析以及数据可视化平台,可以搜索、查看存放在 es 中的数据。

访问地址:Download Kibana Free | Get Started Now | Elastic

下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-7.15.2-windows-x86_64.zip

解压kibana-7.15.2-windows-x86_64.zip目标路径修改kibana-7.15.2-windows-x86_64config路径下的kibana.yml

server.port: 5601
elasticsearch.hosts: ["http://localhost:9200"]

启动Kibana

注意需要先启动elasticsearch.bat,再启动kibana.bat

直接通过链接访问:http://localhost:5601/

进入开发者工具http://127.0.0.1:5601/app/dev_tools#/console

禁用Kibana安全提示(Elasticsearch built-in security features are not enabled)

Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone. See https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html to enable security.

elasticsearch.yml 配置禁用全选xpack.security.enabled ,之后重启ElasticSearch即可:

xpack.security.enabled: false

YAML

Copy

最后报错不要慌,在安装或者运行过程中,遇到异常或者报错查看Elasticsearch安装目录下的logs目录里面的文件

原文地址:https://blog.csdn.net/weixin_42023748/article/details/134753798

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_30182.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注