一、全文检索基础

将非结构化数据中的一部分信息提取出来,重新组织,使其变得有一定结构,然后对此有一定结构的数 据进行搜索,从而达到搜索相对较快的目的。这部分从非结构化数据中提取出的然后重新组织的信息, 我们称之索引。 例如:字典。字典的拼音表和部首检字表就相当于字典的索引,对每一个字的解释是非结构化的,如果 字典没有音节表和部首检字表,在茫茫辞海中找一个字只能顺序扫描。然而字的某些信息可以提取出来 进行结构化处理,比如读音,就比较结构化,分声母和韵母,分别只有几种可以一一列举,于是将读音 拿出来按一定的顺序排列,每一项读音都指向此字的详细解释的页数。我们搜索时按结构化的拼音搜到 读音,然后按其指向的页数,便可找到我们的非结构化数据——也即对字的解释。 这种先建立索引,再对索引进行搜索的过程就叫全文检索(Full-text Search)。 虽然创建索引的过程也是非常耗时的,但是索引一旦创建就可以多次使用,全文检索主要处理的是查 询,所以耗时间创建索引是值得的。

二、ElasticSearch简介

2.1 什么是ElasticSearch

Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检 索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。es也使用Java开发并使用 Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏 Lucene的复杂性,从而让全文搜索变得简单。

2.2 ElasticSearch的使用案例

  1. 2013年初,GitHub抛弃了Solr,采取ElasticSearch 来做PB级的搜索。
  2. “GitHub使用ElasticSearch 搜索20TB的数据,包括13亿文件和1300亿行代码” 维基百科:启动以elasticsearch为基础的核心搜索架构 SoundCloud:“SoundCloud使用ElasticSearch为1.8亿用户提供即时而精准的音乐搜索服务” 百度:
  3. 百度目前广泛使用ElasticSearch作为文本数据分析,采集百度所有服务器上的各类指标数 据及用户自定义数据,通过对各种数据进行多维分析展示,辅助定位分析实例异常或业务层面异 常。
  4. 目前覆盖百度内部20多个业务线(包括casio、云分析、网盟、预测、文库、直达号、钱包、 风控等),单集群最大100台机器,200个ES节点,每天导入30TB+数据 新浪使用ES 分析处理32亿条实时日志 阿里使用ES 构建挖财自己的日志采集和分析体系

2.3 ElasticSearch对比Solr

  1. Solr 利用 Zookeeper 进行分布式管理,而 Elasticsearch 自身带有分布式协调管理功能;
  2. Solr 支持更多格式的数据,而 Elasticsearch 仅支持json文件格式;
  3. Solr 官方提供的功能更多,而 Elasticsearch 本身更注重于核心功能,高级功能多有第三方插件提 供;
  4. 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入门相关推荐

  1. python elasticsearch 入门教程(二) ---全文搜索

    python elasticsearch 入门教程(二) ---全文搜索 截止目前的搜索相对都很简单:单个姓名,通过年龄过滤.现在尝试下稍微高级点儿的全文搜索--一项 传统数据库确实很难搞定的任务. ...

  2. Spring Data ElasticSearch入门案例

    Spring Data ElasticSearch入门案例 创建maven工程elasticsearch_springdata 基于maven导入坐标 导入spring data elasticsea ...

  3. ElasticSearch入门 第一篇:Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  4. ElasticSearch入门 :Windows下安装ElasticSearch

    这是ElasticSearch 2.4 版本系列的第一篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...

  5. ElasticSearch入门 附.Net Core例子

    1.什么是ElasticSearch? Elasticsearch是基于Lucene的搜索引擎.它提供了一个分布式,支持多租户的全文搜索引擎,它具有HTTP Web界面和无模式JSON文档. Elas ...

  6. ElasticSearch入门教程-索引

    ElasticSearch入门教程-索引 在本节中,我们将向Elasticsearch添加一些索引,映射和数据.此数据将用于本教程中说明的示例中. 创建索引 PUT http://localhost: ...

  7. ElasticSearch入门 第五篇:使用C#查询文档

    网址:http://www.cnblogs.com/ljhdo/p/4550135.html 这是ElasticSearch 2.4 版本系列的第五篇: ElasticSearch入门 第一篇:Win ...

  8. 和我一起打造个简单搜索之ElasticSearch入门

    本文简单介绍了使用 Rest 接口,对 es 进行操作,更深入的学习,可以参考文末部分. 环境 本文以及后续 es 系列文章都基于 5.5.3 这个版本的 elasticsearch ,这个版本比较稳 ...

  9. 全文搜索引擎 Elasticsearch 入门概念

    基本概念 Node 与 Cluster Elastic 本质上是一个分布式数据库,允许多台服务器协同工作,每台服务器可以运行多个 Elastic 实例. 单个 Elastic 实例称为一个节点(nod ...

  10. python snap7 简书_第14篇-Python中的Elasticsearch入门

    我的Elasticsearch系列文章,逐渐更新中,欢迎关注 另外Elasticsearch入门,我强烈推荐ElasticSearch搭建手册给你,非常想尽的入门指南手册. 在本文中,我将讨论Elas ...

最新文章

  1. Vue.js(17)之 插槽
  2. java isequal_Java LocalDate isEqual()用法及代码示例
  3. java 基本数据类型 容器_Java 基本数据类型
  4. 通过代码触发dropdownlist_SelectedIndexChanged事件。
  5. *第二周*数据结构实践项目二【多文件系统】
  6. 2021-06-28DOM节点插入
  7. java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决(转)
  8. xp的服务器系统怎么安装系统安装,XP系统怎么安装SQL Server 2000数据库
  9. ISO50001认证咨询,ISO50001能源管理体系建立的基本步骤及企业的管理权限范围
  10. 【STM32F429】第5章 ThreadX NetXDUO网络协议栈介绍
  11. 51c语言延时作用,51单片机C语言延时函数的使用 - 51单片机C语言延时函数怎么定义和使用...
  12. BP算法的身份证号码识别
  13. 2017ps计算机考证
  14. 在 LaTeX 中插入图片
  15. Hrbust 1865 人类希望——kokoII【记忆化搜索】
  16. HLS流媒体服务器对性能要求,搭建hls直播流媒体服务器有什么要求?
  17. FigDraw 13. SCI 文章绘图之桑葚图及文章复现(Sankey)
  18. 从人工智能到物联网……这些公司如何改变农业与食品工业
  19. 【GameMaker 极速入门】#1环境配置
  20. 2019.01.11【BZOJ3308】【ProjectEuler335】 九月的咖啡店/Maximal coprime subset(费用流)

热门文章

  1. 程序人生 - 太突然!浙江重大宣布!真的不敢相信!
  2. 神经网络-非线性激活ReLU
  3. 如何在-Mac-上强制退出应用
  4. 【MATLAB教程案例7】基于Gardner环的定时误差检测matlab仿真
  5. rk3288 调试dvp摄像头_RK3288 - 双路摄像头的硬件外接实现
  6. 工信部就垃圾短信问题约谈7家虚拟运营商
  7. 一键百度 一键翻译 云脉CC慧眼百度搜索版
  8. 如何解决eclipse黑底白字快速需求
  9. 一个能够屏蔽百度广告的爬虫:BaiduSpider
  10. 十年 (2002.6.18)--黑色的2002年世界杯,足球之耻辱