ElasticSearch安装与介绍

这篇具有很好参考价值的文章主要介绍了ElasticSearch安装与介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

ElasticSearch安装与介绍

Elastic Stack简介

       如果你没有听说过Elastic Stack,那你一定听说过ELK,实际上ELK是三款软件的简称,分别是Elasticsearch、Logstash、Kibana组成,在发展的过程中,又有新成员Beats的加入,所以就形成了Elastic Stack。所以说,ELK是旧的称呼,Elastic Stack是新的名字。
ElasticSearch安装与介绍

全系的Elastic Stack技术栈包括:

ElasticSearch安装与介绍

Elasticsearch

基于java,是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash

Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。

Kibana

Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch
提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。

Beats

       Beats是elastic公司开源的一款采集系统监控数据的代理agent,是在被监控服务器上以客户端形式运行的数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动。

Beats由如下组成:

  • Packetbeat:是一个网络数据包分析器,用于监控、收集网络流量信息。
  • Filebeat:用于监控、收集服务器日志文件。
  • Metricbeat:可定期获取外部系统的监控指标信息,其可以监控、收集 Apache、 MySQL、Nginx、等服务;

Beats和Logstash其实都可以进行数据的采集,但是目前主流的是使用Beats进行数据采集,然后使用 Logstash进行数据的分割处理等,早期没有Beats的时候,使用的就是Logstash进行数据的采集。

ElasticSearch快速入门

简介

官网

       ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

       ElasticSearch是Elastic Stack的核心,同时Elasticsearch 是一个分布式、RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。

下载

到官网下载: Elastic

ElasticSearch安装与介绍

       选择对应版本的数据,这里我使用的是Linux来进行安装,所以就先下载好ElasticSearch的Linux安装包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.0-linux-x86_64.tar.gz

单机版安装

       因为ElasticSearch不支持Root用户直接操作,因此我们需要创建一个es用户

# 添加新用户
useradd es
# 创建elk目录
cd /opt/elk
# 下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.0-linux-x86_64.tar.gz
# 解压缩
tar -zxvf elasticsearch-8.8.0-linux-x86_64.tar.gz
#重命名
mv elasticsearch-8.8.0  elsearch

因为刚刚我们是使用root用户操作的,所以我们还需要更改一下/soft文件夹的所属,改为es用户

chown es.es /opt/elk -R

然后在切换成es用户进行操作

# 切换用户
su - es

然后我们就可以对我们的配置文件进行修改了

# 进入到 elsearch下的config目录
cd /opt/elk/elsearch/config

然后找到下面的配置

#打开配置文件
vim elasticsearch.yml 

#设置ip地址,任意网络均可访问
network.host: 0.0.0.0 
#关闭安全功能
xpack.security.enable: true ==> xpack.security.enable: false

       在Elasticsearch中如果,network.host不是localhost或者127.0.0.1的话,就会认为是生产环境,会对环境的要求比较高,我们的测试环境不一定能够满足,一般情况下需要修改2处配置,如下:

# 修改jvm启动参数
vim conf/jvm.options

#根据自己机器情况修改
-Xms128m 
-Xmx128m

       然后在修改第二处的配置,这个配置要求我们到宿主机器上来进行配置

# 到宿主机上打开文件
vim /etc/sysctl.conf
# 增加这样一条配置,一个进程在VMAs(虚拟内存区域)创建内存映射最大数量
vm.max_map_count=655360
# 让配置生效
sysctl -p

启动ElasticSearch

首先我们需要切换到 elsearch用户

su - es

然后在到bin目录下,执行下面

# 进入bin目录
cd /opt/elk/elsearch/bin
# 后台启动
./elasticsearch -d

启动成功后,访问下面的URL

http://192.168.40.150:9200/

如果出现了下面的信息,就表示已经成功启动了

ElasticSearch安装与介绍

如果你在启动的时候,遇到过问题,那么请参考下面的错误分析~

错误分析

错误情况1

如果出现下面的错误信息

java.lang.RuntimeException: can not run elasticsearch as root
	at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:111)
	at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:178)
	at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:393)
	at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:170)
	at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:161)
	at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
	at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:127)
	at org.elasticsearch.cli.Command.main(Command.java:90)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
	at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
For complete error details, refer to the log at /soft/elsearch/logs/elasticsearch.log
[root@e588039bc613 bin]# 2020-09-22 02:59:39,537121 UTC [536] ERROR CLogger.cc@310 Cannot log to named pipe /tmp/elasticsearch-5834501324803693929/controller_log_381 as it could not be opened for writing
2020-09-22 02:59:39,537263 UTC [536] INFO  Main.cc@103 Parent process died - ML controller exiting

就说明你没有切换成 elsearch用户,因为不能使用root操作

su -  elsearch用户

错误情况2

[1]:max file descriptors [4096] for elasticsearch process is too low, increase to at least[65536]

解决方法:切换到root用户,编辑limits.conf添加如下内容

vi /etc/security/limits.conf

# ElasticSearch添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

错误情况3

[2]: max number of threads [1024] for user [elsearch] is too low, increase to at least
[4096]

也就是最大线程数设置的太低了,需要改成4096

#解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
#修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 4096

ElasticSearch-Head可视化工具

       由于ES官方没有给ES提供可视化管理工具,仅仅是提供了后台的服务,elasticsearch-head是一个为ES开发的一个页面客户端工具,其源码托管于Github,地址为 传送门

head提供了以下安装方式

  • 源码安装,通过npm run start启动(不推荐)
  • 通过docker安装(推荐)
  • 通过chrome插件安装(推荐)
  • 通过ES的plugin方式安装(不推荐)

通过Docker方式安装

#拉取镜像
docker pull salgat/elasticsearch-head 
#启动容器
docker run -d --name elasticsearch-head -p 9100:9100 salgat/elasticsearch-head 

注意:
由于前后端分离开发,所以会存在跨域问题,需要在服务端做CORS的配置,如下:

vim elasticsearch.yml
# 新加
http.cors.enabled: true 
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization

通过chrome插件的方式安装不存在该问题

通过Chrome插件安装

打开chrome的应用商店,即可安装 传送门

ElasticSearch安装与介绍

我们也可以新建索引

ElasticSearch安装与介绍

建议:推荐使用chrome插件的方式安装,如果网络环境不允许,就采用其它方式安装。

ElasticSearch中的基本概念

索引

  • 索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。
  • 可以把索引看成关系型数据库的表,索引的结构是为快速有效的全文索引准备的,特别是它不存储原始值。
  • Elasticsearch可以把索引存放在一台机器或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)。

文档

  • 存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文档相当于数据库表中的一行记录。

  • 文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段(multivalued)。
    每个字段的类型,可以是文本、数值、日期等。字段类型也可以是复杂类型,一个字段包含其他子文档或者数组。

映射

       所有文档写进索引之前都会先进行分析,如何将输入的文本分割为词条、哪些词条又会被过滤,这种行为叫做映射(mapping),一般由用户自己定义规则。

文档类型

  • 在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序可以保存文章和评论。
  • 每个文档可以有不同的结构。
  • 不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一个叫title的字段必须具有相同的类型。

RESTful API

       在Elasticsearch中,提供了功能丰富的RESTful API的操作,包括基本的CRUD、创建索引、删除索引等操作。

创建非结构化索引

       在Lucene中,创建索引是需要定义字段名称以及字段的类型的,在Elasticsearch中提供了非结构化的索引,就是不需要创建索引结构,即可写入数据到索引中,实际上在Elasticsearch底层会进行结构化操作,此操作对用户是透明的。

创建空索引

PUT /haoke
{
    "settings": {
        "index": {
        "number_of_shards": "2", #分片数
        "number_of_replicas": "0" #副本数
        }
    }
}

删除索引

#删除索引
DELETE /haoke
{
	"acknowledged": true
}

插入数据

URL规则:
POST /{索引}/{类型}/{id}

POST /haoke/_doc/1001
#数据
{
"id":1001,
"name":"张三",
"age":20,
"sex":"男"
}

使用谷歌插件advanced reset client操作成功后
ElasticSearch安装与介绍

我们通过ElasticSearchHead进行数据预览就能够看到我们刚刚插入的数据了
ElasticSearch安装与介绍

说明:非结构化的索引,不需要事先创建,直接插入数据默认创建索引。
不指定id插入数据:
ElasticSearch安装与介绍

更新数据

       在Elasticsearch中,文档数据是不为修改的,但是可以通过覆盖的方式进行更新。

PUT /haoke/_doc/1001
{
"id":1001,
"name":"大漂亮",
"age":21, 
"sex":"女"
}

更新结果如下:

ElasticSearch安装与介绍

       可以看到数据已经被覆盖了。问题来了,可以局部更新吗? – 可以的。前面不是说,文档数据不能更新吗?
       其实是这样的:在内部,依然会查询到这个文档数据,然后进行覆盖操作,步骤如下:

  1. 从旧文档中检索JSON
  2. 修改它
  3. 删除旧文档
  4. 索引新文档
#注意:这里多了_update标识
POST /haoke/_update/1001
{
"doc":{
"age":66
}
}

ElasticSearch安装与介绍
可以看到,数据已经是局部更新了

删除索引

       在Elasticsearch中,删除文档数据,只需要发起DELETE请求即可,不用额外的参数

DELETE  /haoke/_doc/1001

ElasticSearch安装与介绍

如果删除一条不存在的数据,会响应404
ElasticSearch安装与介绍

删除一个文档也不会立即从磁盘上移除,它只是被标记成已删除。Elasticsearch将会在你之后添加更多索引的时候才会在后台进行删除内容的清理。【相当于批量操作】

搜索数据

根据id搜索数据
GET /haoke/_doc/tPBUbIgBY_Q1v-_oKRV-
#返回的数据如下
{
_index: "haoke"
_id: "tPBUbIgBY_Q1v-_oKRV-"
_version: 1
_seq_no: 4
_primary_term: 1
found: true
_source: {
id: 1005
name: "王五"
age: 20
sex: "男"
}-
}
搜索全部数据
GET  /haoke/_search

注意,使用查询全部数据的时候,默认只会返回10条

ElasticSearch安装与介绍

关键字搜索数据
#查询年龄等于20的用户
GET /haoke/_search?q=age:20

结果如下:

ElasticSearch安装与介绍

DSL搜索

       Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。
       DSL(Domain Specific Language特定领域语言)以JSON请求体的形式出现。

POST /haoke/_search
#请求体
{
    "query" : {
        "match" : { #match只是查询的一种
        	"age" : 20
        }
    }
}

实现:查询年龄大于30岁的男性用户。

POST /haoke/user/_search
#请求数据
{
    "query": {
        "bool": {
            "filter": {
                    "range": {
                        "age": {
                        "gt": 30
                    }
                }
            },
            "must": {
                "match": {
                	"sex": "男"
                }
            }
        }
    }
}

查询出来的结果

ElasticSearch安装与介绍

全文搜索
POST /haoke/_search
#请求数据
{
    "query": {
        "match": {
        	"name": "lh ttd lyj"
        }
    }
}

ElasticSearch安装与介绍

高亮显示,只需要在添加一个 highlight即可

POST /haoke/_search
#请求数据
{
    "query": {
        "match": {
        	"name": "lh"
        }
    }
    "highlight": {
        "fields": {
        	"name": {}
        }
    }
}

ElasticSearch安装与介绍

聚合

       在Elasticsearch中,支持聚合操作,类似SQL中的group by操作。

POST /haoke/_search
{
    "aggs": {
        "all_interests": {
            "terms": {
                "field": "age"
            }
        }
    }
}

结果如下,我们通过年龄进行聚合

ElasticSearch安装与介绍
从结果可以看出,年龄20的有2条数据,21、35、50、80的各有一条数据。文章来源地址https://www.toymoban.com/news/detail-492656.html

到了这里,关于ElasticSearch安装与介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • (二)ElasticSearch 辅助工具 Kibana 介绍与安装

    Kibana 是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。 Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板 (dashboard)实时显示E

    2023年04月26日
    浏览(100)
  • ElasticSearch内容分享(一):ElasticSearch介绍

    目录 ES分布式搜索引擎 初识elasticsearch 1. elasticsearch背景介绍 2. 倒排索引 2.1 正向索引 2.2 倒排索引 2.3 正向和倒排对比 3. ES数据库基本概念 3.1.文档和字段 3.2.索引和映射 3.3.mysql与elasticsearch 4. 安装es、kibana、分词器 4.1 部署单点es 4.1.1.创建网络 4.1.2.加载镜像 4.1.3.运行 4.2.部署

    2024年02月03日
    浏览(36)
  • 【Elasticsearch】Elasticsearch 从入门到精通(一):基本介绍

    《 Elasticsearch 从入门到精通 》共包含以下 2 2 2 篇文章: Elasticsearch 从入门到精通(一):基本介绍 Elasticsearch 从入门到精通(二):基础使用 😊 如果您觉得这篇文章有用 ✔️ 的话,请给博主一个一键三连 🚀🚀🚀 吧 (点赞 🧡、关注 💛、收藏 💚)!!!您的支持 💖

    2024年04月23日
    浏览(34)
  • ElasticSearch架构介绍及原理解析_elasticsearch+sqlserver架构

    - 索引是一个包含多个文档的数据库,文档是可搜索的数据单元。    - 索引可以被看作是关系数据库中的数据库。    - 每个索引由多个分片(Shards)组成,分片是数据的物理副本。         4. **分片(Shards)**:    - 分片是索引的物理分割,用于提高数据的可扩展性和

    2024年04月17日
    浏览(42)
  • Elasticsearch基础篇(四):Elasticsearch的基础介绍与索引设置

    Elasticsearch是一个基于 lucene 、 分布式 、 通过Restful方式进行交互的 近实时搜索 平台框架。 ELK技术栈是 Elasticsearch 、 Logstash 、 Kibana 三大开源框架首字母大写简称。 而Elasticsearch 是一个 开源的高扩展的分布式全文搜索引擎 , 是整个 ELK技术栈的核心。 Elasticsearch是一个基于

    2024年02月04日
    浏览(80)
  • ElasticSearch第一章(入门介绍)

    ElasticSearch(弹性搜索),简称ES。 ES是一个分布式,RESTFul风格的搜索和数据分析引擎 ,能够解决不断涌现出的各种用例。作为 Elastic Stack(Elastic技术栈简称ELK) 的核心,Elasticsearch 会集中存储您的数据,让您飞快完成搜索,微调相关性,进行强大的分析,并轻松缩放规模。 我

    2024年02月22日
    浏览(43)
  • ElasticSearch(ES)介绍

    为什么学习ElasticSearch? 1、ElasticSearch具备非常强的大数据分析能力。虽然Hadoop也可以做大数据分析,但是ElasticSearch的分析能力非常高,具备Hadoop不具备的能力。比如有时候用Hadoop分析一个结果,可能等待的时间比较长。 2、ElasticSearch可以很方便的进行使用,可以将其安装在

    2024年02月09日
    浏览(34)
  • es(Elasticsearch)介绍

    学习es可以参考mysql(相比mysql而言,es所需的cpu、内存更多)    Elasticsearch简称es,是由Elastic和search组成。Elastic的意思是有弹性的,search的意思是搜索。 弹性:es是一个天生支持分布式,不需要借助zk等其他的三方组件就能实现的分布式,理论上讲可以无限进行扩容 搜索:

    2024年02月10日
    浏览(35)
  • ElasticSearch分词器介绍

    在大数据时代,搜索技术变得尤为重要。ElasticSearch作为一款强大的开源搜索引擎,提供了丰富的功能来满足各种搜索需求。其中,分词器是ElasticSearch中一个非常核心的概念,它决定了如何将用户输入的文本切分成一个个的词汇单元。 一、什么是分词器? 简单来说,分词器就

    2024年01月25日
    浏览(34)
  • Elasticsearch入门介绍

    目录 1.1ElasticSearch的使用案例 1.2 ElasticSearch与solr的对比 2.1 安装 2.2修改配置文件 2.3 启动 2.4 安装图形化插件 3.ES相关概念 3.1 概述(重要) 3.2 核心概念 1)index索引- 2)type类型 3)Filed字段 4)映射mapping 5)document文档 6)集群cluster 7)节点node 8)分片和复制 shardsreplicas 4.Elastic

    2024年02月10日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包