热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RESTFulAPI三大优势

在学习Elasticsearch的过程中,你是不是多多少少有以下困惑: 面对Elasticsearch1.X、2.X、5.X、6.X的不同版本,你无从下手?面对ElasticSta

在学习 Elasticsearch 的过程中,你是不是多多少少有以下困惑:

 

面对 Elasticsearch1.X、2.X、5.X、6.X 的不同版本,你无从下手?

面对 ElasticStack(Elasticsearch、Logstash、Kibana、Beat),你不知道从何学起?

面对各种技术文档(官方的及非官方的),你是否感到非常困惑?

面对 Elasticsearch 出现的各种异常、Bug,好不容易找到一个技术群或提问,又没人解答?

市面上的书籍分两种:老外的原理透彻,但版本过时;国内的版本稍新、但不透彻,你是不是很迷茫……

本文:

 

不谈搜索引擎的原理;

不谈倒排索引的原理;

不谈乐观锁、悲观锁的机制;

……

只谈:

 

从产品开发、项目实战的角度,如何让一个 Java 程序员甚至 C/C++ 的程序员快速上手。

海量的版本中,告诉你明确的选择。

ELKStack 技术体系,你的学习优先级。

ELK 技术体系架构。

ELK 技术栈的应用场景。

有了传统关系型数据库(MySQL、Oracle)、非关系型数据库(Mongo),如何快速的导入 Elasticsearch,实现全文检索。

Elasticsearch 实战中遇到问题,如何高效解决。

Elasticsearch 集群部署。

Elasticsearch 集群调优清单。

Elasticsearch 高效进阶方法论。

……

横扫你学习 Elasticsearch 的诸多疑惑,让你少走半年弯路!

 

ELK Stack 认知

考虑到有初学的朋友,先对 ELK Stack 的认知咱们达成共识。

 

ELK Stack 由最早期的最核心的 Elasticsearch(以下部分简称 ES),集合 Logstash、Kibana、beats 等发展而来,形成 ELK Stack 体系。如下图所示。

 

enter image description here

 

Elasticsearch 认知

Elasticsearch 为开源的、分布式、基于 Restful API、支持 PB 甚至更高数量级的搜索引擎工具。

 

相对于 MySQL,给出如下的对应关系表会更好理解。

 

enter image description here

 

从上表中可以看出:

 

MySQL 中的数据库(DataBase),等价于 ES 中的索引(Index)。

MySQL 中一个数据库下面有 N 张表(Table),等价于 1 个索引 Index 下面有 N 多类型(Type)。

MySQL 中一个数据库表(Table)下的数据由多行(Row)多列(column,属性)组成,等价于 1 个 Type 由多个文档(Document)和多 Field 组成。

MySQL 中定义表结构、设定字段类型等价于 ES 中的 Mapping。举例说明,在一个关系型数据库里面,Schema 定义了表、每个表的字段,还有表和字段之间的关系。与之对应的,在 ES 中,Mapping 定义索引下的 Type 的字段处理规则,即索引如何建立、索引类型、是否保存原始索引 JSON 文档、是否压缩原始 JSON 文档、是否需要分词处理、如何进行分词处理等。

MySQL 中的增 insert、删 delete、改 update、查 search 操作等价于 ES 中的增 PUT/POST、删 Delete、改 _update、查 GET。其中的修改指定条件的更新 update 等价于 ES 中的 update_by_query,指定条件的删除等价于 ES 中的 delete_by_query。

MySQL 中的 group by、avg、sum 等函数类似于 ES 中的 Aggregations 的部分特性。

MySQL 中的去重 distinct 类似 ES 中的 cardinality 操作。

MySQL 中的数据迁移等价于 ES 中的 reindex 操作。

以上,通过类比,能加快理解 Elasticsearch 的速度。

 

如下是传统的关系型数据库(如 Oracle、MySQL)、非关系型的数据库(如 Mongo)所做不到的:

 

1.传统的关系型数据库虽然能支持类型“like %待检索词%”模糊语句匹配,但无法进行全文检索(分词检索)。



推荐阅读
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • 本文深入探讨了 C# 中 `SqlCommand` 和 `SqlDataAdapter` 的核心差异及其应用场景。`SqlCommand` 主要用于执行单一的 SQL 命令,并通过 `DataReader` 获取结果,具有较高的执行效率,但灵活性较低。相比之下,`SqlDataAdapter` 则适用于复杂的数据操作,通过 `DataSet` 提供了更多的数据处理功能,如数据填充、更新和批量操作,更适合需要频繁数据交互的场景。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
  • 本文探讨了在Android应用中实现动态滚动文本显示控件的优化方法。通过详细分析焦点管理机制,特别是通过设置返回值为`true`来确保焦点不会被其他控件抢占,从而提升滚动文本的流畅性和用户体验。具体实现中,对`MarqueeText.java`进行了代码层面的优化,增强了控件的稳定性和兼容性。 ... [详细]
  • 如何在Java中高效构建WebService
    本文介绍了如何利用XFire框架在Java中高效构建WebService。XFire是一个轻量级、高性能的Java SOAP框架,能够简化WebService的开发流程。通过结合MyEclipse集成开发环境,开发者可以更便捷地进行项目配置和代码编写,从而提高开发效率。此外,文章还详细探讨了XFire的关键特性和最佳实践,为读者提供了实用的参考。 ... [详细]
  • 尽管PHP曾是我的入门语言,并且至今仍是我的主要工作技能,但在经过五年的开发实践后,我更倾向于推荐Java。Java在与MySQL的兼容性和稳定性方面表现出色,更适合初学者学习和长期发展。此外,Java拥有更丰富的开发资源和社区支持,能够为开发者提供更多的成长机会和技术支持。 ... [详细]
  • Django框架下的对象关系映射(ORM)详解
    在Django框架中,对象关系映射(ORM)技术是解决面向对象编程与关系型数据库之间不兼容问题的关键工具。通过将数据库表结构映射到Python类,ORM使得开发者能够以面向对象的方式操作数据库,从而简化了数据访问和管理的复杂性。这种技术不仅提高了代码的可读性和可维护性,还增强了应用程序的灵活性和扩展性。 ... [详细]
  • MySQL:不仅仅是数据库那么简单
    MySQL不仅是一款高效、可靠的数据库管理系统,它还具备丰富的功能和扩展性,支持多种存储引擎,适用于各种应用场景。从简单的网站开发到复杂的企业级应用,MySQL都能提供强大的数据管理和优化能力,满足不同用户的需求。其开源特性也促进了社区的活跃发展,为技术进步提供了持续动力。 ... [详细]
  • 全新发布的自我修复与自我更新的Linux版本,专为云计算环境设计! ... [详细]
  • 本文全面概述了MySQL的发展历程与演进。最初,我们旨在通过自定义的快速低级(ISAM)接口连接到表格,利用mSQL数据库系统。随着时间的推移,MySQL不仅在性能和稳定性上取得了显著提升,还引入了多种高级功能,如事务处理、存储过程和视图等,成为全球广泛使用的开源数据库管理系统之一。 ... [详细]
  • 本文将介绍一种扩展的ASP.NET MVC三层架构框架,并通过使用StructureMap实现依赖注入,以降低代码间的耦合度。该方法不仅能够提高代码的可维护性和可测试性,还能增强系统的灵活性和扩展性。通过具体实践案例,详细阐述了如何在实际开发中有效应用这一技术。 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 在Linux系统中,MySQL的用户权限管理是运维人员必须掌握的关键技能之一。本文详细介绍了MySQL用户和权限管理的相关概念,包括MySQL用户的概念及其与VSFTPD虚拟用户的相似性,以及密码管理的重要性。此外,还深入探讨了如何通过命令行工具和配置文件进行用户权限的设置和调整,确保系统的安全性和稳定性。 ... [详细]
  • 本文将深入探讨Java编程语言中顶级类`Object`的源码实现,旨在为Java新手提供进阶指导。`Object`类是所有Java类的基类,了解其内部机制对于提升编程技能至关重要。文章首先介绍了API文档的使用方法,这对于有开发经验的Java程序员来说是不可或缺的工具。通过详细解析`Object`类的关键方法和属性,读者可以更好地理解Java的核心原理和设计思想。此外,文章还提供了实际代码示例,帮助读者在实践中掌握这些知识。 ... [详细]
author-avatar
无棱9931
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有