当前位置: 首页 > java >正文

从零启动 Elasticsearch

elastic 有弹力的

ElaticSearch (ES)是一个基于 Lucene 的分布式全文检索引擎。可以做到近乎实时地存储、检索数据,并且本身具有良好的扩展性,可以扩展到上百台服务器,处理PB级别(1 Petabyte = 1024TB)的数据。

ES 常用于日志分析、全文搜索、安全智能、业务分析和运维智能等场景。

文章目录

  • 使用
  • 原理
        • Lucene
      • ELK Stack
      • 原理
          • 索引

使用

可用 docker 部署 elasticsearch 程序,默认有安全检测不好连接,生产环境可以见下面命令绕过连接启动:

在这里插入图片描述

访问测试:
在这里插入图片描述
也可以用 curl http://localhost:9200 来测试

相关docker命令:

-- 关闭 Elasticsearch 安全认证(仅测试环境) (没有应该会下载,注意版本)
docker run -d -p 9200:9200 -p 9300:9300 `-e "discovery.type=single-node" `-e "xpack.security.enabled=false" `--name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:8.12.0-- 之后直接 start 启动即可:
docker start elasticsearch 
docker stop elasticsearch
docker rm elasticsearchdocker ps -a  # 查看所有容器(包括停止的)
docker logs elasticsearch

写java时:

springbootframe 管理的 elasticsearch 只需配置即可使用:

  • ElasticsearchRepository已经提供了基础的 CRUD 操作
    这里交互方法也只需声明继承的接口:
  • 自定义方法则能通过命名规则来扩展更多查询功能——也不需要实现,Spring Data 框架能够依据方法名称自动生成对应的实现。
package org.example.searchservice.repository;import org.example.common.dto.Question;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.stereotype.Repository;import java.util.List;@Repository
public interface QuestionEsRepository extends ElasticsearchRepository<Question, String> {// 标题或内容模糊搜索(自动解析成 bool should)List<Question> findByTitleContainingOrContentContaining(String title, String content);// 根据标签精确匹配(List<String> 是 keyword 类型)List<Question> findByTagsIn(List<String> tags);
}//你不需要手动实现插入方法,ElasticsearchRepository 已经帮你准备好了常用的 CRUD 方法,包括插入。
//        🧩 一、插入数据的方式
//ElasticsearchRepository 继承了 CrudRepository,所以它自动拥有以下方法:
//
//方法	作用
//save(T entity)	插入或更新单条数据
//saveAll(Iterable<T> entities)	批量插入或更新
//findById(ID id)	根据 ID 查询
//deleteById(ID id)	根据 ID 删除
//findAll()	查询所有
//count()	统计数量

检索:(需先把要检索的插入ES,如上的save方法)
在这里插入图片描述

原理

Lucene

Lucene 是一个全文检索引擎工具包 。
它是一款 纯Java的全文检索引擎工具包,提供了完整的查询引擎和索引引擎,主要用于实现全文搜索功能。

Lucene 主要是基于倒排索引的文本检索,通过创建并建立索引器(IndexWriter)来读取需要建立全文索引的文本内容 —— 即读入一堆文本文件并将其转换为易于搜索的数据结构

ElasticSearch 是基于 Lucene 做了封装和增强,通过简单的 RESTful API 来隐藏 Lucene 的复杂性。

ELK Stack

ES与Logstash、Beats和Kibana等工具协同工作,共同提供数据收集、存储、分析、可视化和监控等功能,组成 ELK 。

  • Logstash:数据收集与处理 管道工具(采集日志数据、过滤清洗)
  • Beats:轻量级的数据采集器(日志或指标)
  • Kibana:可视化工具
工作流程:[ 日志 / 数据 ]↓Beats(轻量上报器)↓Logstash(采集 + 清洗)↓
Elasticsearch(存储 + 查询)↓Kibana(可视化)

原理

索引

ES 中存储数据的基本单元,并且用于搜索和分析数据。

http://www.xdnf.cn/news/7049.html

相关文章:

  • C#接口(Interface)全方位讲解:定义、特性、应用与实践
  • Manus 全面开放注册,OpenAI 发布 Codex,ChatGPT 上线 GPT-4.1!| AI Weekly 5.12-18
  • 【Linux高级全栈开发】2.1.2 事件驱动reactor的原理与实现
  • FTP协议
  • elasticsearch kibana ik 各版本下载
  • 医疗信息系统安全防护体系的深度构建与理论实践融合
  • CSS- 4.4 固定定位(fixed) 咖啡售卖官网实例
  • 多指标组合策略思路
  • PopSQL:一个支持团队协作的SQL开发工具
  • 第9章 组件及事件处理
  • Vue+Go 自定义打字素材的打字网站
  • 18. 结合Selenium和YAML对页面继承对象PO的改造
  • 宝塔面板部署前后端项目SpringBoot+Vue2
  • 蓝桥杯19682 完全背包
  • 【通用大模型】Serper API 详解:搜索引擎数据获取的核心工具
  • iOS 初识RunLoop
  • 用 UniApp 开发 TilePuzzle:一个由 CodeBuddy 主动驱动的拼图小游戏
  • SpringBoot项目里面发起http请求的几种方法
  • EMQX开源版安装指南:Linux/Windows全攻略
  • 连续概率分布 (拉普拉斯分布)
  • Flink 的水印机制
  • 第三十七节:视频处理-视频读取与处理
  • PostGIS实现矢量数据转栅格数据【ST_AsRaster】
  • FFmpeg:多媒体处理的终极利器
  • 有哪些GIF图片转换的开源工具
  • Neo4j数据库
  • spark数据处理练习题详解【上】
  • 【AGI】大模型微调数据集准备
  • leetcodehot100刷题——排序算法总结
  • ubuntu18.04通过cuda_11.3_xxx.run安装失败,电脑黑屏解决办法