Elasticsearch - 简介
Elasticsearch 是一个分布式、可扩展、开源的全文搜索与数据分析引擎。它可以存储、搜索、分析 PB 级别的近实时数据。Elasticsearch 使用 Lucene 作为其核心来实现所有的索引和搜索功能,通过简单的Restful API 隐藏 Lucene 的复杂性,从而让全文搜索变得简单。
功能
Elasticsearch 主要有以下几个功能:
1 结构化搜索
结构化搜索是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围,或判定两个值的大小。
文本也可以是结构化的。如彩色笔可以有离散的颜色集合: 红(red)
、 绿(green)
、 蓝(blue)
。
在结构化查询中,我们得到的结果总是非是即否,要么存于集合之中,要么存在集合之外。
2 全文搜索
全文搜索就是对一篇文章进行索引,然后根据关键字搜索,类似于 mysql 里的 like 语句。
3 聚合
通过结构化搜索和全文搜索,如果我们有一个查询并且希望找到匹配这个查询的文档集,就好比在大海捞针。而通过聚合,我们会得到一个数据的概览。我们需要的是分析和总结全套的数据而不是寻找单个文档:
-
在大海里有多少针?
-
针的平均长度是多少?
-
按照针的制造商来划分,针的长度中位值是多少?
-
每月加入到海中的针有多少?
-
你最受欢迎的针的制造商是什么?
-
这里面有异常的针么?
优缺点
优点:
-
高可用,如果某些节点出现故障时会自动分配其他节点代替其进行工作,并会把节点故障的数据复制到其它可用的节点上。
-
横向扩展性,可以在不停机的情况下增加新的节点,以提高集群的容量和性能。
-
可以扩展到上百台服务器,处理 PB 级别的结构化和非结构化数据。
缺点:
-
Elasticsearch 不支持 ACID 事务,无法保证多个文档处于同一个事务中。
-
Elasticsearch 的搜索是伪实时性的,默认情况下,文档从添加到对外可见能够被搜到最少要1秒钟。这么做是Lucene 为了提高写操作的吞吐量而做出的延迟牺牲,当然这个设置是可以手动调整的,但是并不建议修改它,会极大地影响搜索性能。
-
mapping 不可变,如果需要改变付出的代价十分高的。
-
默认情况下,在写入文档时,需要创建和刷新索引数据,所以写入性能不高。更新和删除操作时需要 merge 操作,也会影响性能。
应用场景
Elasticsearch 根据其特点有以下几种场景:
-
站内搜索:Elasticsearch 是一个强大的全文搜索引擎。
-
大数据的实时搜索、存储、统计。
-
监控:统计、日志等时序数据的存储和分析、可视化。
参考文档:
相关文章
- 【Spring Boot】Spring Boot之使用 Spring Data Elasticsearch 整合elasticsearch
- elasticsearch配置文件中http.cors.x字段有哪些用途和用法
- 第三百六十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)的mget和bulk批量操作
- 大数据基础之ElasticSearch(1)简介、安装、使用
- ElasticSearch Aggregations GroupBy 实现源码分析
- 当 Elasticsearch 遇上 MaxCompute —— 「Elasticsearch on MaxCompute 」简介
- kibana操作elasticsearch:match匹配查询(and关系)
- Elasticsearch安装(四), elasticsearch head 插件安装和使用。
- Elasticsearch教程(六) elasticsearch Client创建
- [ElasticSearch]Java API 之 词条查询(Term Level Query)
- 【数据库优化】记一次引入Elasticsearch的系统架构实战
- Python编程:elasticsearch库操作Elasticsearch
- 【云原生 | 32】Docker运行数据采集和分析引擎Elasticsearch
- 基于Kubernetes集群搭建Elasticsearch集群
- elasticsearch 索引搜索和索引性能优化配置——思路:去掉不必要的数据,减小数据的磁盘空间占用,同时提升性能
- [Elasticsearch] 全文搜索 (一) - 基础概念和match查询
- Elasticsearch进行优化-使用索引拆分(Split)和索引收缩(shrink )
- ELK 吃透Elasticsearch 堆内存
- ElasticSearch_08_SpringBoot集成ES