ElasticSearch入门
一、全文检索基础
将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数 据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息, 我们称之索引。 例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果 字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来 进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音 拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到 读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。 这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。 虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查 询,所以耗时间创建索引是值得的。
二、ElasticSearch简介
2.1 什么是ElasticSearch
Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检 索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用 Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏 Lucene的复杂性,从而让全文搜索变得简单。
2.2 ElasticSearch的使用案例
- 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。
- “GitHub使用ElasticSearch 搜索20TB的数据,包括13亿文件和1300亿行代码” 维基百科:启动以elasticsearch为基础的核心搜索架构 SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务” 百度:
- 百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数 据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异 常。
- 目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、 风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据 新浪使用ES 分析处理32亿条实时日志 阿里使用ES 构建挖财自己的日志采集和分析体系
2.3 ElasticSearch对比Solr
- Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
- Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
- Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提 供;
- Solr 在传统的搜索应用中表现好于 Elasticsearch,但在处理实时搜索应用时效率明显低于 Elasticsearch
三、ElasticSearch相关概念(术语)
3.1 概述
Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(document)。 然而它不仅仅是存储,还会索引(index)每个文档的内容使之可以被搜索。在Elasticsearch中,你可以对 文档(而非成行成列的数据)进行索引、搜索、排序、过滤。Elasticsearch比传统关系型数据库如下:
Relational DB -> Databases -> Tables -> Rows -> Columns
Elasticsearch -> Indices -> Types -> Documents -> Fields
3.2 Elasticsearch核心概念
3.2.1 索引 index
一个索引就是一个拥有几分相似特征的文档的集合。比如说,你可以有一个客户数据的索引,另一个产 品目录的索引,还有一个订单数据的索引。一个索引由一个名字来标识(必须全部是小写字母的),并 且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在 一个集群中,可以定义任意多的索引。
3.2.2 类型 type
在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义 完全由你来定。通常,会为具有一组共同字段的文档定义一个类型。比如说,我们假设你运营一个博客 平台并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客 数据定义另一个类型,当然,也可以为评论数据定义另一个类型。
3.2.3 字段Field
相当于是数据表的字段,对文档数据根据不同属性进行的分类标识
3.2.4 映射 mapping
mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被 索引等等,这些都是映射里面可以设置的,其它就是处理es里面数据的一些使用规则设置也叫做映射, 按着最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立映射才能对性能 更好。
3.2.5 文档 document
一个文档是一个可被索引的基础信息单元。比如,你可以拥有某一个客户的文档,某一个产品的一个文 档,当然,也可以拥有某个订单的一个文档。文档以JSON(Javascript Object Notation)格式来表 示,而JSON是一个到处存在的互联网数据交互格式。 在一个index/type里面,你可以存储任意多的文档。注意,尽管一个文档,物理上存在于一个索引之 中,文档必须被索引/赋予一个索引的type。
3.2.6 接近实时
NRT Elasticsearch是一个接近实时的搜索平台。这意味着,从索引一个文档直到这个文档能够被搜索到有一 个轻微的延迟(通常是1秒以内)
3.2.7 集群 cluster
一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。 一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节 点只能通过指定某个集群的名字,来加入这个集群
3.2.8 节点 node
Relational DB -> Databases -> Tables -> Rows -> Columns Elasticsearch -> Indices -> Types -> Documents -> Fields 一个节点是集群中的一个服务器,作为集群的一部分,它存储数据,参与集群的索引和搜索功能。和集 群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的漫威漫画角色的名 字,这个名字会在启动的时候赋予节点。这个名字对于管理工作来说挺重要的,因为在这个管理过程 中,你会去确定网络中的哪些服务器对应于Elasticsearch集群中的哪些节点。 一个节点可以通过配置集群名称的方式来加入一个指定的集群。默认情况下,每个节点都会被安排加入 到一个叫做“elasticsearch”的集群中,这意味着,如果你在你的网络中启动了若干个节点,并假定它们 能够相互发现彼此,它们将会自动地形成并加入到一个叫做“elasticsearch”的集群中。 在一个集群里,只要你想,可以拥有任意多个节点。而且,如果当前你的网络中没有运行任何 Elasticsearch节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的集群。
ElasticSearch入门相关推荐
- python elasticsearch 入门教程(二) ---全文搜索
python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...
- Spring Data ElasticSearch入门案例
Spring Data ElasticSearch入门案例 创建maven工程elasticsearch_springdata 基于maven导入坐标 导入spring data elasticsea ...
- ElasticSearch入门 第一篇:Windows下安装ElasticSearch
这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch入门 :Windows下安装ElasticSearch
这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- ElasticSearch入门 附.Net Core例子
1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档. Elas ...
- ElasticSearch入门教程-索引
ElasticSearch入门教程-索引 在本节中,我们将向Elasticsearch添加一些索引,映射和数据.此数据将用于本教程中说明的示例中. 创建索引 PUT http://localhost: ...
- ElasticSearch入门 第五篇:使用C#查询文档
网址:http://www.cnblogs.com/ljhdo/p/4550135.html 这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Win ...
- 和我一起打造个简单搜索之ElasticSearch入门
本文简单介绍了使用 Rest 接口,对 es 进行操作,更深入的学习,可以参考文末部分. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳 ...
- 全文搜索引擎 Elasticsearch 入门概念
基本概念 Node 与 Cluster Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例. 单个 Elastic 实例称为一个节点(nod ...
- python snap7 简书_第14篇-Python中的Elasticsearch入门
我的Elasticsearch系列文章,逐渐更新中,欢迎关注 另外Elasticsearch入门,我强烈推荐ElasticSearch搭建手册给你,非常想尽的入门指南手册. 在本文中,我将讨论Elas ...
最新文章
- Mysql与Oracle区别
- Gartner:大数据和BI商业智能的差别和影响
- Javascript – 正则表达式
- 《C++ primer》--第11章
- STM32学习——USART收发数据
- linux重启python服务_如何将python脚本作为linux服务启动
- 暑期集训20190727 水(water)
- 协方差矩阵经线性变化可以变成不相关的
- font: 12px/1.5 Tahoma, Helvetica, Arial, sans-serif;
- HDU today(最短路径)
- Matlab代码:综合能源系统(IES)的优化调度
- 在Ubuntu18.04TLS下安装小米随身wifi驱动
- bpsk调制matlab,matlab BPSK 调制与解调
- 三星samsung 3G手机s7220 小技巧
- 【宋红康 MySQL数据库 】【高级篇】【01】CentOS7下MySQL的安装与使用
- Maya动画后期——粒子特效的制作
- Admin5推荐软文推广采用“链接标准化”
- 领先农业技术平台Dimitra,帮助小农户实现农业现代化
- JAVA旅游信息管理平台SSM【数据库设计、毕业设计、源码、开题报告】
- 详谈硬盘分区表格式MBR与GUID/GPT
热门文章
- oracle数据库数据合并,Oracle合并数据
- 吉林教育杂志吉林教育杂志社吉林教育编辑部2022年第28期目录
- 什么是CSS特异性及其工作方式?
- JavaWeb 打开的默认主页设置问题
- AWS云计算技术架构探索系列之一-开篇
- 邓仲祥:神奇魅力的太子山
- 跨考计算机复试自我介绍,复试之自我介绍_跨考网
- 教你三步优化宝贝标题,搜索流量翻倍获取
- CreateObject(SAPI.SpVoice).Speak 电脑读文字的方法
- iPhone的解锁、越狱、激活、固件等等是什么意思,有什么分别?(转)