您现在的位置是:首页 > 正文

elasticsearch入门介绍

2023-12-31 16:04:14阅读 176

一、介绍

1.1 ES简介

Elasticsearch(简称ES)是使用iava开发,基于Lucene、分布式、通过Restful7方式进行交互的近实时搜索平台框架。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

ES是ELK架构技术栈的组件之一。

ELK(ES+Logstash+Kibana)是一个免费开源的日志分析架构技术栈总称,但实际上ELK不仅仅适用于日志分析,它还可以支持其它任何数据搜索、分析和收集的场景,日志分析和收集只是更具有代表性。随着elk的发展,又有新成员Beats、elastic cloud的加入,所以就形成了Elastic Stack。.所以说,ELK是旧的称呼,Elastic Stack是新的名字。

1.2 ES特点

  • 处理方式灵活:ES是目前最流行的准实时全文检索引擎,具有高速检索大数据的能力。
  • 接口简单:采用json形式RESTFUL API接受数据并响应,无关语言。
  • 性能高效:ES基于优秀的全文搜索技术Lucene,采用倒排索引,可以轻易地在百亿级别数据量下,搜索出想要的内容,并且是秒级响应。
  • 功能强大:ES作为传统数据库的一个补充,提供了数据库所不不能提供的很多功能,如全文检索,同义词处理,相关度排名。

1.3应用场景

ES主要用于搜索。传统的数据库搜索存在以下弊端:

  • 电商、社交网站数据存储往往是GB、PB级。存储上亿条数据时,涉及到的单表数据过大就必须分表,数据库磁盘占用过大就必须分库。
  • 当查询一个词或者一行内容时,上亿条数据的帖子需要从标题和内容中逐行扫描,性能相当差。
  • 不能分词,当我搜索一个词或者一行内容时,只能搜到指定内容的数据。

而相对的,就可以使用ES进行解决。ES具有以下功能:

  • 分布式的搜索引擎搜索:互联网搜索、站内搜索。
  • 全文检索,结构化检索,数据分析

对海量数据进行近实时的处理分布式:ES自动可以将海量数据分散到多台服务器上去存储和检索,经行并行查询。近实时:es只需秒级即可查询海量数据。

常见的Elasticsearch节点类型:

Master节点

    • 负责集群管理任务,例如维护集群状态、索引管理、节点故障检测等。
    • 不参与数据存储或搜索。
    • 一个集群中通常只有一个或少数几个主节点。

Data节点:

    • 存储索引数据,执行数据的读写操作。
    • 负责执行搜索请求。
    • 通常是集群中的大部分节点。

Ingest节点:

    • 负责预处理文档,例如数据转换、数据解析和数据增强。
    • 可以在数据进入索引之前对其进行处理。

Coordinating节点 (有时也称为Client节点):

    • 用于路由搜索和索引请求,将请求转发到适当的Data节点。
    • 旨在处理客户端请求,如索引、搜索、获取集群状态等,而不进行数据存储。

除了上述的角色外,还有其他一些特殊的节点和角色,例如:

  • Ingest node with pipeline:带有自定义pipeline的Ingest节点,可以进行复杂的数据转换和处理。
  • Machine Learning节点:专门用于Elasticsearch的机器学习功能。
  • 具体的角色和配置取决于集群的需求和规模。在配置Elasticsearch集群时,通常会根据集群的规模和性能要求来决定节点的数量和类型。

1.4 Lucene&Solr&ESLucene

最先进、功能最强大的搜索库,直接基于lucene开发,非常复杂,api复杂。

solr:Solr是一个高性能,采用ava开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

ES:基于lucene,封装了许多lucene)底层功能,提供简单易用的restful api接口和许多语言的客户端。

solr和ES性能对比:

当单纯的对已有数据进行搜索,并且数据量不是很大时,Sol更快。

当实时建立索引时,Solr会产生io阻塞,查询性能较差,ES具有明显的优势。

1.5 倒排索引

常规的索引简历方式:文档—>关键词的映射过程(正向索引)

倒排反向建立索引:关键词—>文档的映射 把正向索引的结果重新构造成倒排索引(反向索引)

二、ElasticSearch安装

2.1 ElasticSearch目录结构

文件夹 作用
/bin 运行ElasticSearch实例和管理插件的一些脚本
/config 配置文件夹,如Elasticsearch.yml和logging.yml
/data 数据文件夹
/lib ElasticSearch使用库
/logs 日志
/plugins 已经安装的插件存放位置

注意:9300 端口为 Elasticsearch 集群间组件的通信端口,9200 端口为浏览器访问的 http 协议 RESTful 端口。

2.2 linux安装

wget -c https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.4.0-linux-x86_64.tar.gz
tar -zxf elasticsearch-8.4.0-linux-x86_64.tar.gz
cd elasticsearch-8.4.0-linux-x86_64
bin/elasticsearch

2.3 服务配置

vi /etc/systemd/system/elasticsearch.service
[Unit]
Description=elasticsearch 7.16.3

[Service]
Type=forking
User=elk-admin
LimitNOFILE=65536
LimitNPROC=65536
# 后台命令启动
ExecStart=/opt/elasticsearch-7.16.3/bin/elasticsearch -d

[Install]
WantedBy=multi-user.target

2.4 用户密码配置

#设置密码
bin/elasticsearch-setup-passwords interactive
#重置密码
bin/elasticsearch-reset-password -u elastic
# 添加用户
 bin/elasticsearch-users useradd leellun -r superuser 

三、基础知识

Node(节点):单个的装有ElasticSearch服务并提供故障转移和扩展的服务器。

Cluster(集群):一个集群就是由一个或多个node组织在一起,共同作用,共同分享整个数据具有负载均衡功能的集群。

Document(文档):一个文档是一个可被索引的基础信息单元。

Index(索引):索引就是一个拥有几分相似特征的文档的集合。

Type(类型):一个索引种,可以定义一种或多种类型。

Field(列):Field是ElasticSearch的最小单元,相当于数据的某一列。

Shards(分片):ElasticSearch将索引分成若干份,每一个部分就是一个shard。

Replicas(复制):Replicas是索引一份或多分拷贝。

关系型数据库 非关系型数据库(ElasticSearch)
数据库 database 索引Index
表Table 类型Type
数据行Row 文档Document
数据列Column 字段Field

四、资源操作

  • GET:用来获取资源
  • POST:用来新建资源(也可以用于更新资源)
  • PUT:用来更新资源
  • DELETE:用来删除资源

五、ElasticSearch架构

 

Discovery

  • 负责发现在集群内的节点,以及选举新的节点。
  • Elasticsearch 是-个Peer to peer 系统,节点间直接通当操作是delegated/broadcast.
  • Master 节点是用来维护Global cluaster state,同时为新加入和离开的节点分配shards.
  • 每次集群状态改变,节点都会知道(具体的方式取决于实际的Discovery实现)

六、分词插件

七、Mapping映射

映射:创建索引的时候,可以预先定义字段的类型以及相关属性。作用:这样会让索引建立得更加的细致和完善!分类:静态映射和动态映射

es类型说明:

es属性字段:

7.1 动态映射·

文档中碰到一个以前没见过的字段时,动态映射可以自动决定该字段的类型,并对该字段添加映射。

如何配置动态映射?

通过dynamic属性进行控制true:默认值,动态添加字段:false:忽略新字段:strict:碰到陌生字段,抛出异常。

适用范围

适用在根对象上或者object类型的任意字段上

八 Logstash

8.1 Logstash运行参数

8.2 数据类型

  • 布尔boolean:ssl_enable=>true
  • 字节bytes:my_bytes=>"10MiB" #10485760 bytes
  • 字符串String:name=>"Hello world“
  • 数值Number:port=>514
  • Array:match =["datetime","UNIX","IS08601"]
  • 哈希Hash:options=>{key1=>"value1", key2=>"value2"}
  • 编码解码:codec:codec=>“json"
  • 密码型:my_password=>“password”
  • 路径:my_path=>"/tmp/logstash
  • 注释:#

8.3 条件判断

=(等于),=(不等于),<《小于),大于),<=(小于等于),>=(大于等于)=匹配正则),(不匹配正则)

in(包含),not in(不包含) and(与),or(或),nand非与,xor(非或)

():复合表达式,!():对复合表达式结果取反

8.4 Logstash配置结构

  • inputs 就是输入
  • codecs 就是解码
  • filters 就是过滤
  • outputs 输出

网站文章

  • springboot springsession 结合caffeine

    maven配置 &lt;dependency&gt; &lt;groupId&gt;com.github.gotson&lt;/groupId&gt; ...

    2023-12-31 12:04:47
  • springboot caffeine缓存配置

    maven配置 &lt;dependency&gt; &lt;groupId&gt;com.github.ben-manes.caffeine&lt;/grou...

    2023-12-31 11:59:32
  • springboot ehcache缓存配置

    maven配置 &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&g...

    2023-12-31 11:49:15
  • k8s集成KubeSphere的第一个应用程序wordpress

    示例wordpress部署 这里使用project-regular权限账号进行登录,可以通过admin用户添加指定账号,然后创建空间demo-wordspace,并且创建demo-project项目 ...

    2023-12-31 11:00:44
  • k8s二进制快速集成KubeSphere

    一、KubeSphere 介绍 KubeSphere 是在 Kubernetes 之上构建的面向云原生应用的分布式操作系统,完全开源,支持多云与多集群管理,提供全栈的 IT 自动化运维能力,简化企业的...

    2023-12-31 10:48:21
  • 二进制部署kubernetes集群的推荐方式

    软件版本: 软件 版本 containerd v1.6.5 etcd v3.5.0 kubernetes v1.24.0 一、系统环境 1.1 环境准备 角色 IP 服务 k8s-master01 1...

    2023-12-31 00:43:12
  • 如何在一台服务器上安装etcd集群

    一、环境 角色 IP etcd-1 192.168.10.10 (12379、12380) etcd-2 192.168.10.10 (22379、22380) etcd-3 192.168.10.1...

    2023-12-31 00:21:23
  • containerd镜像构建

    实用buildkit构建 wget https://github.com/moby/buildkit/releases/download/v0.10.5/buildkit-v0.10.5.linux-...

    2023-12-30 23:55:46
  • containerd 二进制安装

    一、环境 系统:Centos7 二、进制安装 Release containerd 1.6.5 · containerd/containerd · GitHub github上面提供了带cri、cni...

    2023-12-30 23:48:54
  • crictl命令的基本使用

    [root@k8s-node02 k8s-install]# crictl --help NAME: crictl - client for CRI USAGE: crictl [glo...

    2023-12-29 17:51:00