首页 > 其他分享 >elasticsearch入门介绍

elasticsearch入门介绍

时间:2024-05-24 10:27:44浏览次数:18  
标签:入门 介绍 索引 elasticsearch 搜索 数据 节点 ES

一、介绍

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数据文件夹
/libElasticSearch使用库
/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 输出

标签:入门,介绍,索引,elasticsearch,搜索,数据,节点,ES
From: https://blog.csdn.net/weixin_44416039/article/details/139058928

相关文章

  • 如何系统的入门大模型?
    对大模型领域感兴趣的程序员。看一下围绕大模型的应用场景和人才需求:pormpt:基于提示词对大模型的使用,会问问题就行。基于大模型的应用:在大模型生态之上做业务层产品。AI主播、AI小助手。。。之前是会调API就行。现在有了GPTs,连调用API都可以不用了,动动嘴就可以实现应用生......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-47-自动滚动到元素出现的位置
    1.简介在我们日常工作中或者生活中,经常会遇到我们的页面内容较多,一个屏幕范围无法完整展示内容,我们就需要滚动滚动条去到我们想要的地方,如下图页面,我们虽然在豆瓣首页,但是内容并不完整,如果我们想要直接点击电影模块中的选电影按钮,是需要往下滑动的。当页面超过屏幕的高度时候,需要......
  • Feign的介绍与使用
    什么是Feign?Feign是声明式WebService客户端,它让微服务之间的调用变得更简单。为什么使用Feign?Feign旨在使编写JavaHttp客户端变得更容易;之前在使用Ribbon+RestTemplate时,利用RestTemplate对Http请求的封装处理,形成了一套模板化的调用方法。但是在实际开发中,由于对......
  • [Java]Socket套接字(网络编程入门)
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032037出自【进步*于辰的博客】参考笔记二,P61。注:“一对一”、“多对多”是相对于Socket而言,而非服务端/客户端类的个数。目录1、概述2、二种聊天模式2.1“一对一......
  • ES数据迁移工具介绍及最佳实践
    一、项目背景由于项目升级需要将es索引迁移,从es版本看是从elasticsearch-5.6.6版本迁移到elasticsearch-7.17.5版本中,因之前其他项目采用elasticdump工具迁移,有过成功经验,所以首先借鉴其经验采用elasticdump工具来实现。注意:由于网络、服务器性能等的关系,elasticdump工具在索......
  • Vue 3入门指南
    title:Vue3入门指南date:2024/5/2319:37:34updated:2024/5/2319:37:34categories:前端开发tags:框架对比环境搭建基础语法组件开发响应式系统状态管理路由配置第1章:Vue3简介1.1Vue.js的历史与发展Vue.js由前谷歌工程师尤雨溪(EvanYou)在2014年发布。......
  • Git入门教程
    Git入门教程目录页1.Git介绍1.1.Git工作原理2.Git环境配置2.1.Git下载与安装2.2.Git使用方式2.3.Git基本配置2.3.1.Git与Github的通信建立2.3.2.忽略不同步文件3.命令行方式——Git命令代码输入3.1.常用Git命令3.2.git本地操作3.3.g......
  • elasticsearch使用Sort排序时Please use a keyword field instead.
    具体报错信息ElasticsearchStatusException[Elasticsearchexception[type=search_phase_execution_exception,reason=allshardsfailed]];nested:ElasticsearchException[Elasticsearchexception[type=illegal_argument_exception,reason=Textfieldsarenotoptimised......
  • 介绍主流源代码管理工具
    在选择源代码管理工具时,GitHub是一个非常受欢迎和推荐的平台。GitHub不仅是最大的源代码存储和版本控制服务,而且对开源项目是免费的。它基于Git,这是一种专为分布式版本控制和协作而设计的流行开源工具。GitHub提供了代码托管、版本控制、团队协作、项目管理等一系列功能,这些功能帮......
  • 性能TPS介绍
    TPS概念:TP指标:指在一个时间段内,统计该方法每次调用所消耗的时间,并将这些时间按从小到大的顺序进行排序,并取出结果为:总次数*指标数=对应TP指标的值,在取出排序好的时间。 TP50:满足百分之五十的网络请求所需的最低耗时。TP90:满足百分之九十的网络请求所需的最低耗时。T......