Elasticsearch 入门

目录

Elasticsearch 介绍

概述

场景

Elasticsearch 基础

基本概念

数据结构

Elasticsearch 安装

 系统和软件

安装说明

Elasticsearch 使用

Rest Api

集群操作

索引操作

文档操作 

Java Api 集成

SpringBoot 集成

添加依赖

添加配置

添加 Entity

添加 Service

添加 ServiceImpl

添加 Controller

Elasticsearch 总结


Elasticsearch 介绍

概述

Elasticsearch(ES) 在搜索和数据分析场景中的卓越表现越来越引人注目,它在很多互联网应用中起着非常关键的作用。

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库。

Elasticsearch 不仅仅是 Lucene,并且也不仅仅只是一个全文搜索引擎,它可以被下面这样准确的形容:

  • 一个分布式的实时文档存储,每个字段可以被索引与搜索;
  • 一个分布式实时分析搜索引擎;
  • 能胜任上百个服务节点的扩展,并支持 PB 级别的结构化或者非结构化数据。

场景

Elasticsearch 的使用场景非常丰富,甚至可以考虑使用 Elasticsearch 作为唯一的数据存储,以下罗列适合使用 Elasticsearch 的场景:

  • 支持全文索引场景;
  • 大数据存储和分析场景;
  • 作为非关系型数据存储,例如日志的记录和分析,常和 Kibana 可视化配合使用;
  • 数据不需要频繁更新、不需要强事务要求、数据之间关系较为简单。

Elasticsearch 基础

基本概念

Elasticsearch 主要包含如下几个基本概念:

  • cluster(集群):一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能;
  • node(节点):一个节点是你集群中的一个服务器,作为集群的一部分,它存储你的数据,参与集群的索引和搜索功能;
  • shard(分片):数据的最小单元块,创建一个索引的时候,可以指定分片的数量。每个分片是一个功能完善并且独立的“索引”,可以被放置到集群中的任何节点上;
  • replica(副本):分片的一份或多份拷贝叫做复制分片,或者直接叫复制。

数据结构

Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。数据结构包含:index(索引)、type(类型)、document(文档)、fields(字段)。

  • index(索引):索引即数据,索引是文档的载体,相当于 MySQL 的 database;
  • type(类型):在 Elasticsearch 7 版本中已经被废弃;
  • document(文档):数据内容,相当 MySQL 的行,存储 JSON 非关系型数据;
  • fields(字段):字段,相当 MySQL 的列,如果存储 JSON 结构,为 JSON 的属性。

为了方便理解,将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比。

Elasticsearch 安装

 系统和软件

安装实验在 CentOS 系统进行,请提前准备,软件安装包 elasticsearch-7.8.0-linux-x86_64.tar.gz 这里获取。

  • 操作系统:CentOS Linux release 7.9.2009 (Core)
  • Elasticsearch:elasticsearch-7.8.0

安装说明

  • 创建用户设置密码

elasticsearch-7.8.0 出于安全考虑,需要非 root 权限运行,使用 root 权限添加用户 es

useradd es && passwd es 

此处输入两次密码即可
  • 修改文件描述符数量和进程数量配置 /etc/security/limits.conf
## 将以下内容追加到文件最后 
es soft nofile 65536 
es hard nofile 65535 
es soft nproc 4096 
es hard nproc 4096
  • 修改一个进程的虚拟内存数量 /etc/sysctl.conf
## 将以下内容追加到文件最后 
vm.max_map_count=655360

 ##然后执行
 sysctl -p
  • 切换 es 账户
su es && cd ~
  • 解压安装包
tar zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz && mv elasticsearch-7.8.0 es
  • 添加配置 es/config/elasticsearch.yml
## 将以下内容追加到文件最后 
cluster.name: elasticsearch 
node.name: node-1 
network.host: 0.0.0.0 
http.port: 9200 
cluster.initial_master_nodes: ["node-1"]
  • 启动程序
bin/elasticsearch

[2022-10-25T23:56:02,784][INFO ][o.e.d.DiscoveryModule    ] [node-1] using discovery type [zen] and seed hosts providers [settings]
[2022-10-25T23:56:04,315][INFO ][o.e.n.Node               ] [node-1] initialized
[2022-10-25T23:56:04,316][INFO ][o.e.n.Node               ] [node-1] starting ...
[2022-10-25T23:56:09,819][INFO ][o.e.t.TransportService   ] [node-1] publish_address {192.168.0.2:9300}, bound_addresses {[::]:9300}
[2022-10-25T23:56:10,018][INFO ][o.e.b.BootstrapChecks    ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
[2022-10-25T23:56:10,038][INFO ][o.e.c.c.Coordinator      ] [node-1] setting initial configuration to VotingConfiguration{qATFpUAGRs-Y7L3j6sGuIw}
[2022-10-25T23:56:10,272][INFO ][o.e.c.s.MasterService    ] [node-1] elected-as-master ([1] nodes joined)[{node-1}{qATFpUAGRs-Y7L3j6sGuIw}{-cJnjB3tTKKkdzqUT9QPZQ}{192.168.0.2}{192.168.0.2:9300}{dilmrt}{ml.machine_memory=1019572224, xpack.installed=true, transform.node=true, ml.max_open_jobs=20} elect leader, _BECOME_MASTER_TASK_, _FINISH_ELECTION_], term: 1, version: 1, delta: master node changed {previous [], current [{node-1}{qATFpUAGRs-Y7L3j6sGuIw}{-cJnjB3tTKKkdzqUT9QPZQ}{192.168.0.2}{192.168.0.2:9300}{dilmrt}{ml.machine_memory=1019572224, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}
[2022-10-25T23:56:10,372][INFO ][o.e.c.c.CoordinationState] [node-1] cluster UUID set to [C45uu309Tf68UNw8ZAq4Gg]
[2022-10-25T23:56:10,458][INFO ][o.e.c.s.ClusterApplierService] [node-1] master node changed {previous [], current [{node-1}{qATFpUAGRs-Y7L3j6sGuIw}{-cJnjB3tTKKkdzqUT9QPZQ}{192.168.0.2}{192.168.0.2:9300}{dilmrt}{ml.machine_memory=1019572224, xpack.installed=true, transform.node=true, ml.max_open_jobs=20}]}, term: 1, version: 1, reason: Publication{term=1, version=1}
[2022-10-25T23:56:10,679][INFO ][o.e.h.AbstractHttpServerTransport] [node-1] publish_address {192.168.0.2:9200}, bound_addresses {[::]:9200}
[2022-10-25T23:56:10,680][INFO ][o.e.n.Node               ] [node-1] started

Elasticsearch 使用

Rest Api

Elasticsearch提供了一个非常全面和强大的 REST API,开发者利用 REST API,可以实现与集群之间的交互,主要提供了如下几个功能:

  • 检查集群、节点和索引的健康信息、状态以及各种统计信息;
  • 管理集群、节点、索引数据以及元数据;
  • 对索引进行 CRUD(创建、读取、更新和删除)和搜索操作;
  • 执行高级的搜索操作, 例如分页、排序、过滤、脚本编写(scripting)、聚合(aggregations)以及其它操作。

集群操作

  • 查看集群健康信息
curl -X GET "http://localhost:9200/_cat/health?v"

epoch      timestamp cluster       status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent
1665584601 14:23:21  elasticsearch green           1         1      6   6    0    0        0             9              21.9h                100.0%
  • 查看节点详细信息
curl -X GET "localhost:9200/_cat/nodes?v"

ip        heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
127.0.0.1           19          39   0                          dilmrt    *      LAPTOP-M4N1OUMV

索引操作

  • 查看所有索引信息
curl -X GET "localhost:9200/_cat/indices?v"

health status index                          uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana-event-log-7.8.0-000001 BVN8w1jRSUC_NbZHnHAqeg   1   0          1            0      5.3kb          5.3kb
green  open   .apm-custom-link               AaHmK0QgRRijvG3WpMtfiA   1   0          0            0       208b           208b
green  open   .kibana_task_manager_1         JZIHyd8WTIWceeTrdk40OA   1   0          5            1     30.3kb         30.3kb
green  open   .apm-
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值