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

跟我学ElasticSearch入门篇

跟我学Ela



一、ElasticSearch简介

1.1、ElasticSearch简介

Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。但是,Lucene只是一个库。想要使用它,你必须使用Java来作为开发语言并将其直接集成到你的应用中,更糟糕的是,Lucene非常复杂,你需要深入了解检索的相关知识来理解它是如何工作的。Elasticsearch也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的 RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。

1.2、同类产品比较solr

Solr 是Apache下的一个顶级开源项目,采用Java开发,它是基于Lucene的全文搜索服务器。Solr提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展,并对索引、搜索性能进行了优化 。并自带了图形管理界面。

数据相对少的请求下Solr的检索效率更高

数据量大时,Solr的搜索效率变低,而ElasticSearch没有明显变化

建立索引时,Solr会产生阻塞IO,查询性能较差,ElasticSearch有优势

安装使用方面ElasticSearch更为简单

总结solr查询快,但更新索引时慢(即插入删除慢),用于电商等查询多的应用,比如商品搜索 。

ES建立索引快(即查询慢),即实时性查询快,适用用于数据频繁更新的应用,比如facebook新浪等搜索。

Solr 是传统搜索应用的有力解决方案,但 Elasticsearch 更适用于新兴的实时搜索应用。

ES没有Solr成熟,学习成本相对较高。

二、 ElasticSearch安装和插件

2.1、ElasticSearch安装

下载Es安装包

ElasticSearch的官方地址:https://www.elastic.co/guide/en/elasticsearch/reference/master/index.html

2.2、ES图形化管理界面安装

1)下载head https://github.com/mobz/elasticsearch-head

2) 下载Node.js https://nodejs.org/en/download

安装完成 在cmd窗口执行node -v查看node.js的版本号 检查是否安装成功

3) 安装grunt

通过node.js的包管理器npm安装grunt为全局命令,grunt是基于Node.js的项目构建工具

npm install-g grunt-cli

4)执行 npm install (不执行该命令 使用grunt server命令会报错)

npm install

如有执行该命令报错的 在elasticsearch-head解压目录下执行

5)elasticsearch-head解压目录下打开命窗口

执行 grunt server 启动服务

访问http://localhost:9100 (elasticsearch-head服务端口)

6、配置ElasticSearch跨域访问 修改 config/elasticsearch.yml 文件

  1. http.cors.enabled: true

  2. http.cors.allow-origin: "*"

需要重启ES服务

7、在head页面输入链接的ElasticSearch地址,点击连接按钮

三、 ElasticSearch的相关概念

3.1 概述

Elasticsearch是面向文档(document oriented)的,这意味着它可以存储整个对象或文档(ducoment)。然而它不仅仅是存储,还会索引(index)每个文档的内容使之能搜索。在Elasticsearch中,你可以对文档(而非成行成列的数据 )进行索引、排序、过滤。Elasticsearch比传统关系型数据库如下。

  1. 关系型数据库 -> Databases -> Tables -> Rows -> Colums


  2. ElasticSearch -> Indices -> Types ->Documents -> Fields

3.2 ElasticSearch的核心概念

3.2.1 索引 index

一个索引就是有相似特征的文档集合,比如用户数据索引、订单数据索引、商品数据索引。

一个索引由一个全为小写字母的名字标识,我们在对应这个索引文档中进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个群集中可以定义任意多个索引。

3.2.2 类型type

在一个索引中,你可以定义一个或多个类型,一个类型是你的索引的一个逻辑上的分类,其语义完全由你来定。通常,会为具有一组共同字段的文档定义一个类型,比如说,我们订单数据索引中我们把订单信息作为一个类型,订单相关的物流信息做为一个类型。但在6.0开始建议index只包含一个type,在7.0之后开始去除。

3.2.3 字段field

相当于是数据表的字段,对文档根据不同的属性进行的分类标识

3.2.4 映射 mapping (表结构)

mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分析器、是否被索引等等,这些都是映射里面可以设置的,其他的就是处理es里面的数据的一些使用规则设置也叫做映射,按最优规则处理数据对性能提高很大,因此才需要建立映射,并且需要思考如何建立隐射才能对性能更好。

3.2.5 文档 document

一个文档是一个可被索引的基础单元。文档以JSON格式来表示,而JSON是一个到处存在的互联网数据交互格式。

在一个index/type里面,你可以存储任意多的文档。

3.2.6 ElasticSearch版本问题说明

Elasticsearch 官网提出的近期版本对 type 概念的演变情况如下:

5.X 版本中,一个 index 下可以创建多个 type;

6.X 版本中,一个 index 下只能存在一个 type;

7.X 版本中,直接去除了 type的概念,就是说 index 不再会有 type。

去除type的原因 :

因为 Elasticsearch 设计初期,是直接参考了关系型数据库的设计模式,存在了 type(数据表)的概念。但是,其搜索引擎是基于 Lucene的,这种 “基因”决定了 type 是多余的。Lucene 的全文检索功能之所以快,是因为 倒序索引** 的存在。而这种倒序索引 的生成是基于 index 的,而并非 type。





推荐阅读
  • ElasticSerach初探第一篇认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
    一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTfulAPI来隐藏Lucene的复杂性。全文搜索,分析系统&# ... [详细]
  • camel_使用Camel在来自不同来源的Solr中索引数据
    camelApacheSolr是建立在Lucene之上的“流行的,快速的开源企业搜索平台”。为了进行搜索(并查找结果),通常需要从不同的源(例如内容管理 ... [详细]
  • es的分布式原理?es是如何实现分布式的?
    Elasticsearch设计的理念是分布式搜索引擎,底层其实是基于lucene。核心思 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 项目运行环境配置及可行性分析
    本文介绍了项目运行环境配置的要求,包括Jdk1.8、Tomcat7.0、Mysql、HBuilderX等工具的使用。同时对项目的技术可行性、操作可行性、经济可行性、时间可行性和法律可行性进行了分析。通过对数据库的设计和功能模块的设计,确保系统的完整性和安全性。在系统登录、系统功能模块、管理员功能模块等方面进行了详细的介绍和展示。最后提供了JAVA毕设帮助、指导、源码分享和调试部署的服务。 ... [详细]
  • 部署solr建立nutch索引
    2019独角兽企业重金招聘Python工程师标准接着上篇nutch1.4的部署应用,我们来部署一下solr,solr是对lucene进行了封装的企 ... [详细]
  • 一:什么是solrSolr是apache下的一个开源项目,使用Java基于lucene开发的全文搜索服务器;Lucene是一个开放源代 ... [详细]
  • mysql+全文检索设计,基于sphinx+mysql全文检索架构设计.doc
    基于sphinxmysql全文检索架构设计.doc还剩2页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,喜欢就下载吧& ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了Nutch相关的知识,希望对你有一定的参考价值。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 科技情报开发与经济文章编号:1005-603ÿ ... [详细]
  • Lucene系列四:Lucene提供的分词器、IKAnalyze中文分词器集成、扩展 IKAnalyzer的停用词和新词
    一、Lucene提供的分词器StandardAnalyzer和SmartChineseAnalyzer1.新建一个测试Lucene提供的分词器的maven项目LuceneAnal ... [详细]
  • Nexus3.0.0+Maven的使用(一)
    1、Nexus介绍Nexus是一个强大的Maven仓库管理器,它极大地简化了自己内部仓库的维护和外部仓库的访问。利用Nexus你可以只在一个地方就能够完全控制访问和部署在你所维护仓 ... [详细]
author-avatar
violalal_134
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有