zoukankan      html  css  js  c++  java
  • Elasticsearch

    Elasticsearch 是一个分布式、可扩展、开源的全文搜索与数据分析引擎。它可以存储、搜索、分析 PB 级别的近实时数据。Elasticsearch 使用 Lucene 作为其核心来实现所有的索引和搜索功能,通过简单的Restful API 隐藏 Lucene 的复杂性,从而让全文搜索变得简单。

    功能

    Elasticsearch 主要有以下几个功能:

    1 结构化搜索

    结构化搜索是指有关探询那些具有内在结构数据的过程。比如日期、时间和数字都是结构化的:它们有精确的格式,我们可以对这些格式进行逻辑操作。比较常见的操作包括比较数字或时间的范围,或判定两个值的大小。

    文本也可以是结构化的。如彩色笔可以有离散的颜色集合: 红(red)绿(green)蓝(blue)

    在结构化查询中,我们得到的结果总是非是即否,要么存于集合之中,要么存在集合之外。

    2 全文搜索

    全文搜索就是对一篇文章进行索引,然后根据关键字搜索,类似于 mysql 里的 like 语句。

    3 聚合

    通过结构化搜索和全文搜索,如果我们有一个查询并且希望找到匹配这个查询的文档集,就好比在大海捞针。而通过聚合,我们会得到一个数据的概览。我们需要的是分析和总结全套的数据而不是寻找单个文档:

    • 在大海里有多少针?

    • 针的平均长度是多少?

    • 按照针的制造商来划分,针的长度中位值是多少?

    • 每月加入到海中的针有多少?

    • 你最受欢迎的针的制造商是什么?

    • 这里面有异常的针么?

    优缺点

    优点:

    1. 高可用,如果某些节点出现故障时会自动分配其他节点代替其进行工作,并会把节点故障的数据复制到其它可用的节点上。

    2. 横向扩展性,可以在不停机的情况下增加新的节点,以提高集群的容量和性能。

    3. 可以扩展到上百台服务器,处理 PB 级别的结构化和非结构化数据。

    缺点:

    1. Elasticsearch 不支持 ACID 事务,无法保证多个文档处于同一个事务中。

    2. Elasticsearch 的搜索是伪实时性的,默认情况下,文档从添加到对外可见能够被搜到最少要1秒钟。这么做是Lucene 为了提高写操作的吞吐量而做出的延迟牺牲,当然这个设置是可以手动调整的,但是并不建议修改它,会极大地影响搜索性能。

    3. mapping 不可变,如果需要改变付出的代价十分高的。

    4. 默认情况下,在写入文档时,需要创建和刷新索引数据,所以写入性能不高。更新和删除操作时需要 merge 操作,也会影响性能。

    应用场景

    Elasticsearch 根据其特点有以下几种场景:

    1. 站内搜索:Elasticsearch 是一个强大的全文搜索引擎。

    2. 大数据的实时搜索、存储、统计。

    3. 监控:统计、日志等时序数据的存储和分析、可视化。


    参考文档:

    1. Elasticsearch学习,请先看这一篇!

    2. Elasticsearch: 权威指南

    3. Elasticsearch 官方文档

    4. ElasticSearch 内部机制浅析(二)



  • 相关阅读:
    BZOJ4401 块的计数
    poj2914 Minimum Cut 全局最小割模板题
    无向图求最小割集
    HDU3232 Crossing Rivers 数学期望问题
    poj1386 字符串类型的一笔画问题 欧拉回路
    HDU3018 几笔画(非1笔)
    欧拉路&&欧拉回路 概念及其练习
    欧拉回路基础 HDU1878 欧拉回路||并差集
    我的明天在何处
    哈夫曼树讲解
  • 原文地址:https://www.cnblogs.com/ExMan/p/11386130.html
Copyright © 2011-2022 走看看