嗨!你们好,程序员读书栏目又回来了,这要感谢51CTO提供的录课专用麦克风。此次咱们开始读Elasticsearch的官方文档。也就是ES, 那什么是ElasticSearch呢?程序员
You know, for search (and analysis)web
就像它的名字同样,它是用于搜索和分析的。sql
看到搜索有没有想到咱们开发经常使用的关系性数据库?Mysql啊,PostgreSql啊什么的?那Elasticsearch又跟Mysql有什么区别呢?先前咱们作搜索的确是使用的关系性数据库,可是对于文本的模糊查询使用关系性数据库的like语句性能比较低,能够想象一篇博客有2、3千字,若是要使用like语句判断这篇博客中是否出现了某个关键字,最坏的状况下计算机要进行2/3千次匹配计算,这个性能是很低的,Elasticsearch最初就是为了提升文本检索的性能开发的。它是怎么提升性能的呢?文档里也有介绍。咱们接着往下面读。数据库
Elasticsearch is the distributed search and analytics engine at the heart of the Elastic Stack.安全
这里提到Elasticsearch是Elastic技术栈中支持分布式搜索和分析的核心组件。既然是技术栈就不仅包括Elasticsearch一种组件,那还包括那些组件呢?app
Logstash and Beats facilitate collecting, aggregating, and enriching your data and storing it in Elasticsearch. Kibana enables you to interactively explore, visualize, and share insights into your data and manage and monitor the stack. Elasticsearch is where the indexing, search, and analysis magic happens.less
这里对Elastic技术栈进行了简单的介绍,除了Elasticseach还包括用于数据搜集、聚合、加工处理的Logstach和Beats.能够对数据进行交互式探索分析可视化的Kibana,Kibana还具有对技术栈中组件的管理和监控功能。Elasticsearch主要负责对数据进行索引处理,提供搜索分析服务。简单来讲Elastic技术栈就是从数据的搜集到存储再到可视化分析提供了一条龙的服务,该去大厅的去大厅该上二楼的上二楼想去三楼的去三楼,一站式解决,服务一条龙。机器学习
Elasticsearch provides near real-time search and analytics for all types of data. Whether you have structured or unstructured text, numerical data, or geospatial data, Elasticsearch can efficiently store and index it in a way that supports fast searches.分布式
Elasticsearch支持对全部数据类型的近实时搜索,咱们刚才提到刚开始使用ES是为了提升全文检索的性能,随着ES的发展,它不但支持对文本类型数据还支持对数字甚至地理位置等类型数据进行快速的索引和搜索。功能是愈来愈强大,因此咱们如今更倾向于说Elasticsearch是一个NoSql数据库。 ide
这里还提到了俩个词structured or unstructured也就是结构化和非结构化,有的同窗可能还听过半结构化,他们之间有什么区别呢?或者说怎么区分数据是结构化的仍是半结构化的仍是非结构化的?
我是这么区分的:
把数据分为数据的结构描述信息和具体的数据俩部分,什么意思呢?咱们使用数据库中的一张学生表来举例,表自己是须要定义有多少字段,每一个字段的类型、长度等信息的,这些定义的信息就是数据的结构描述信息,咱们往表里插入的具体的学生名称啊学号啊这些就是具体的数据。那什么是结构化数据呢?结构化数据就是有固定结构描述信息的数据,好比咱们数据库里的表,往表里插入的数据必须知足表的结构,不管你是多插入了一个不存在的字段仍是数据长度超过了字段定义的长度都会报错,插不进去。
理解告终构化数据就不难理解非结构化数据了,非结构化数据就是没有结构描述信息的数据。好比咱们在别人博客下面写的评论,能够说想怎么写就怎么写,很随意。
那什么又是半结构化数据呢?半结构化的数据也有结构描述信息,可是又不像结构化数据那样结构比较固定,像Json和XML类型的数据,虽然有必定的结构,但在使用的过程当中多添加一个原来不存在的字段也不会报错。
在作大数据时常常会看到这三个词,这里顺便说下,我说的也未必对。还要提醒下你们,不要跟我学英语发音,由于个人英语发音不许,上学那会也是学的哑吧英语。 高考前猛看《高考必备》,不知道如今还有没,一本像词典同样的书,英语总分150,我当时考了138分的样子。考完就忘的差很少了。 不少同窗应该都这样,高考前都是上知天文下知地理,高考一结束就都还给老师了。
咱们接着往下面看:
You can go far beyond simple data retrieval and aggregate information to discover trends and patterns in your data. And as your data and query volume grows, the distributed nature of Elasticsearch enables your deployment to grow seamlessly right along with it.
咱们不单可使用ES作一些简单的数据检索和聚合分析去发现数据中的趋势和模式关系。咱们还能够在数据愈来愈多的时候经过添加机器无缝的支持大数据量的处理。由于ES是原生支持分布式的。
While not every problem is a search problem, Elasticsearch offers speed and flexibility to handle data in a wide variety of use cases:
固然并非全部的问题均可以经过搜索解决的,ES也提供了良好的性能和灵活性去适应不一样的业务场景。好比:
Add a search box to an app or website
在app或者网站上添加个搜索框,能够考虑使用ES提供搜索服务
Store and analyze logs, metrics, and security event data
还可使用ES存储、分析系统运行日志、性能指标和安全相关的事件数据。
Use machine learning to automatically model the behavior of your data in real time
使用机器学习自动对数据进行建模。机器学习的功能应该是ES6之后才新增的功能,这几年是云、大数据、机器学习比较火。 技术类的产品常常跟这几个词挂钩。
Automate business workflows using Elasticsearch as a storage engine
也能够将ES作为自动商业工做流中的存储引擎。
Manage, integrate, and analyze spatial information using Elasticsearch as a geographic information system (GIS)
也能够将ES作为一个地理位置信息系统使用,对地理位置信息进行管理和分析。
Store and process genetic data using Elasticsearch as a bioinformatics research tool
也能够将ES用于生物信息研究中,用于存储和处理基因数据。
官方给的这几个用例场景跨度仍是蛮大的,从普通的网站到GIS再到生物信息。能够说ES的应用范围仍是挺广的。
We’re continually amazed by the novel ways people use search.
虽然咱们已经知道在不少不一样领域中都有使用ES,可是咱们仍是常常被用户使用ES的方式震惊到。这里仍是突出ES的灵活性,适用场景普遍。 有点王婆卖瓜的意思,是吧?
But whether your use case is similar to one of these, or you’re using Elasticsearch to tackle a new problem, the way you work with your data, documents, and indices in Elasticsearch is the same.
可是不管你的应用场景跟上面提到相似仍是要使用ES解决新的问题,ES内部对数据、文档和索引的方式都是同样的,也就是万变不离其宗。因此咱们有必要继续往下面看,继续学习下ES内部对数据的处理方式,什么是文档啊?什么是索引啊?
咱们这期就先读到这里,接下来你能够点个赞或者加个关注,鼓励咱们一直读下去。