Elasticsearch7.2系列文章:https://www.xugj520.cn/category/ES/ 算法
为了搜索和分析,你懂得!!!安全
Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎。Logstash和Beats有助于收集,聚合和丰富您的数据并将其存储在Elasticsearch中。Kibana使您可以以交互方式探索,可视化和分享数据洞察,并管理和监控堆栈。Elasticsearch是索引,搜索和分析魔术发生的地方。服务器
Elasticsearch为全部类型的数据提供实时搜索和分析。不管您是结构化文档仍是非结构化文本,数字数据或地理空间数据,Elasticsearch均可以以支持快速搜索的方式有效地存储和索引它。您能够远远超出简单的数据检索和聚合信息,以发现数据中的趋势和模式。随着您的数据和查询量的增加,Elasticsearch的分布式特性使您的部署可以与其一块儿无缝地增加。网络
虽然不是每一个问题都是搜索问题,但Elasticsearch提供了处理各类用例数据的速度和灵活性:数据结构
Elasticsearch是一个分布式文档存储。Elasticsearch不是将信息存储为列数据行,而是存储已经序列化为JSON文档的复杂数据结构。当群集中有多个Elasticsearch节点时,存储的文档将分布在群集中,而且能够从任何节点当即访问。架构
存储文档时,它会在1秒内实时索引并彻底可搜索。Elasticsearch使用称为倒排索引的数据结构,支持很是快速的全文搜索。倒排索引列出任何文档中出现的每一个惟一单词,并标识每一个单词出现的全部文档。机器学习
索引能够被视为优化的文档集合,每一个文档都是字段的集合,这些字段是包含数据的键值对。默认状况下,Elasticsearch会为每一个字段中的全部数据编制索引,而且每一个索引字段都具备专用的优化数据结构。例如,文本字段存储在反向索引中,数字和地理字段存储在BKD树中。使用每一个字段的数据结构来汇编和返回搜索结果的能力使Elasticsearch如此之快。分布式
Elasticsearch还具备无模式的能力,这意味着能够索引文档而无需显式指定如何处理文档中可能出现的每一个不一样字段。启用动态映射后,Elasticsearch会自动检测并向索引添加新字段。这种默认行为使您能够轻松索引和浏览数据 - 只需开始索引文档,Elasticsearch将检测并将布尔值,浮点和整数值,日期和字符串映射到相应的Elasticsearch数据类型。工具
可是,最终,您比Elasticsearch更了解您的数据以及您但愿如何使用它。您能够定义规则来控制动态映射并显式定义映射,以彻底控制字段的存储和索引方式。性能
定义本身的映射使您可以:
在索引期间应用于全文字段的分析链也在搜索时使用。查询全文字段时,查询文本在索引中查找术语以前会进行相同的分析。
虽然您能够将Elasticsearch用做文档存储并检索文档及其元数据,但真正的强大功能来自于可以轻松访问基于Apache Lucene搜索引擎库构建的全套搜索功能。
Elasticsearch提供了一个简单,一致的REST API,用于管理集群,索引和搜索数据。出于测试目的,您能够直接从命令行或经过Kibana中的Developer Console轻松提交请求。从您的应用程序中,您可使用 Elasticsearch客户端 做为您选择的语言:Java,JavaScript,Go,.NET,PHP,Perl,Python或Ruby。
搜索您的数据 Elasticsearch REST API支持结合了二者的结构化查询,全文查询和复杂查询。结构化查询相似于能够在SQL中构造的查询类型。例如,您能够搜索索引中的gender和age字段,并按字段employee对匹配项进行排序hire_date。全文查询查找与查询字符串匹配的全部文档,并按相关性对其进行返回 - 与搜索字词的匹配程度。
除了搜索单个术语外,您还能够执行短语搜索,类似性搜索和前缀搜索,并获取自动填充建议。
是否要搜索地理空间或其余数字数据?Elasticsearch将优化数据结构中的非文本数据编入索引,以支持高性能的地理和数字查询。
您可使用Elasticsearch的全面JSON样式查询语言(查询DSL)访问全部这些搜索功能。您还能够构建SQL样式的查询以在Elasticsearch内本地搜索和聚合数据,JDBC和ODBC驱动程序使各类第三方应用程序可以经过SQL与Elasticsearch进行交互。
分析您的数据 经过Elasticsearch聚合,您能够构建复杂的数据摘要,并深刻了解关键指标,模式和趋势。聚合使您没法找到众所周知的“大海捞针”,而是回答如下问题:
大海捞针有多少针?
针的平均长度是多少?
根据制造商细分的针的中位长度是多少?
在过去的六个月里,天天有多少针被加到草堆里? 您还可使用聚合来回答更微妙的问题,例如:
你最受欢迎的针头制造商是什么?
是否有任何异常或异常的针丛? 因为聚合利用了用于搜索的相同数据结构,所以它们也很是快。这使您能够实时分析和可视化数据。您的报告和仪表板会随着数据更改而更新,以便您能够根据最新信息采起措施。
更重要的是,聚合与搜索请求一块儿运行。您能够在同一数据中,在单个请求中同时搜索文档,过滤结果和执行分析。而且由于聚合是在特定搜索的上下文中计算的,因此您不只要显示全部70针的数量,而是显示与用户的搜索条件匹配的70针的数量 - 例如,全部尺寸70 不粘刺绣针。
可是等等,还有更多的 想要自动分析您的时间序列数据?您可使用 机器学习功能在数据中建立正常行为的准确基线,并识别异常模式。经过机器学习,您能够检测到:
与值,计数或频率的时间误差相关的异常 统计稀缺 一我的口的不寻常行为 最好的部分?您无需指定算法,模型或其余与数据科学相关的配置便可完成此操做。
Elasticsearch始终可用,可根据您的需求进行扩展。它经过天然分配来实现这一点。您能够将服务器(节点)添加到群集以增长容量,Elasticsearch会自动在全部可用节点上分配数据和查询负载。无需完全检查您的应用程序,Elasticsearch了解如何平衡多节点群集以提供规模和高可用性。节点越多,越好。
这是如何运做的?在封面下,Elasticsearch索引实际上只是一个或多个物理分片的逻辑分组,其中每一个分片其实是一个自包含的索引。经过跨多个分片在索引中分发文档,并将这些分片分布在多个节点上,Elasticsearch能够确保冗余,这能够防止硬件故障,并在节点添加到群集时提升查询容量。随着集群的增加(或收缩),Elasticsearch会自动迁移分片以从新平衡集群。
有两种类型的分片:原色和副本。索引中的每一个文档都属于一个主分片。副本分片是主分片的副本。副本提供数据的冗余副本,以防止硬件故障并增长服务读取请求(如搜索或检索文档)的容量。
索引中的主分片数在建立索引时是固定的,但副本分片的数量能够随时更改,而不会中断索引或查询操做。
这取决于... ...
关于分片大小和为索引配置的主分片数量,存在许多性能考虑因素和折衷方案。分片越多,维护这些索引的开销就越大。分片大小越大,当Elasticsearch须要从新平衡群集时,移动分片所需的时间越长。
查询大量小分片使得每一个分片的处理速度更快,但查询意味着更多的开销,所以查询较少数量的较大分片可能会更快。简而言之......这取决于。
做为一个起点:
在容灾的状况下 出于性能缘由,群集中的节点须要位于同一网络上。在不一样数据中心的节点之间平衡群集中的分片只须要太长时间。可是高可用性架构要求您避免将全部鸡蛋放在一个篮子里。若是在一个位置发生重大中断,则另外一个位置的服务器须要可以接管。无缝链接。答案?跨群集复制(CCR)。
CCR提供了一种自动将索引从主群集同步到可做为热备份的辅助远程群集的方法。若是主群集出现故障,则辅助群集能够接管。您还可使用CCR建立辅助群集,以便在地理位置接近用户时提供读取请求。
跨群集复制是主动 - 被动的。主群集上的索引是活动的leader索引并处理全部写入请求。复制到辅助群集的索引是只读关注者。
维护和管理 与任何企业系统同样,您须要工具来保护,管理和监控您的Elasticsearch集群。集成到Elasticsearch中的安全性,监控和管理功能使您能够将Kibana 用做管理集群的控制中心。相似的特征数据汇总和指标生命周期管理 帮助您明智随着时间的推移管理您的数据。