elasticsearch入门介绍

一、介绍

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 输出
  • 41
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ElasticSearch是一个开源的分布式搜索引擎,基于Lucene库。它可以快速地存储、搜索和分析大量的数据。ElasticSearch被广泛用于日志分析、全文搜索、安全分析和商业智能等领域。 以下是ElasticSearch入门指南: 1. 安装ElasticSearch:你可以从ElasticSearch官网下载并安装ElasticSearch。根据你的操作系统选择相应的版本。 2. 启动ElasticSearch:启动ElasticSearch非常简单。只需在终端中运行elasticsearch命令即可。 3. 探索ElasticSearch:通过在浏览器中输入http://localhost:9200/,可以访问ElasticSearch的REST API,并能看到ElasticSearch的基本信息。 4. 创建索引:在ElasticSearch中,数据被存储在索引中。你可以通过发送PUT请求来创建一个新的索引。例如,你可以使用以下命令来创建一个名为“my_index”的新索引: ``` PUT /my_index { "settings": { "number_of_shards": 1, "number_of_replicas": 0 } } ``` 5. 添加文档:在ElasticSearch中,文档是指一个JSON对象。你可以使用以下命令将文档添加到“my_index”索引中: ``` PUT /my_index/_doc/1 { "title": "Elasticsearch入门", "author": "John", "content": "Elasticsearch是一个开源的分布式搜索引擎" } ``` 6. 搜索文档:你可以使用以下命令来搜索“my_index”索引中的所有文档: ``` GET /my_index/_search ``` 7. 进行查询:你可以使用查询语句来搜索“my_index”索引。例如,你可以使用以下命令来搜索标题包含“Elasticsearch”的所有文档: ``` GET /my_index/_search { "query": { "match": { "title": "Elasticsearch" } } } ``` 这就是ElasticSearch入门指南。对于更深入的学习,你可以查看ElasticSearch官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值